Home > Development, Under-the-hood > zkanji under-the-hood – handwriting recognition

zkanji under-the-hood – handwriting recognition

DISCLAIMER: This entry is about the inner workings of zkanji. It might not be suitable for non-programmers while programmers might find it too trivial. Don’t expect a mathematically elegant explanation either. My primary aim is to make the explanation easy to understand.

The IME (Input Method Editor) pad in Windows allows its users to write Japanese characters with the mouse, and as they add stroke after stroke, it offers a list of character candidates that resemble the drawn image. Any text editor or input box that’s prepared to use the IME can accept these characters. Zkanji is not one of them for several reasons. When I started writing it, I didn’t have any idea about how the IME works, but most of all I didn’t like the idea that I, as a user, would have to manually switch between English and Japanese when searching in the dictionary. At first I only wrote an input box where anything typed in turns into kana and which accepts Japanese characters from the clipboard. Because the only requirement for this is to have one or two Japanese fonts installed, zkanji could be run on most systems, even those that have no IME installed. (For some reason many people don’t have it.) I didn’t want to add handwriting recognition, because I thought that it would be very difficult to do and a lot of work that’s not worth it, but as zkanji evolved I wanted some new challenge that’s different from what I was doing.

When I made up my mind, I started looking for a character recognition algorithm for Japanese kanji. You would think these algorithms are easy to find, because on the internet everything is free and everyone is eager to help others. After days of fruitless search I finally found an entry in a blog that gave me the solution. I could not understand it though (at least not fully), but it led me to the Levenshtein distance which I’m grateful for. Understanding that, and why it works was the first step towards writing the handwriting recognition. I won’t explain the Levenshtein distance, it’s quite straightforward in that wiki article.

My algorithm is very similar to Levenshtein’s with changes proposed by the above mentioned blog (which also just quotes some other algorithm, that I was too lazy to look up). Its principle is that we build a matrix from two sequences. The columns and rows represent elements of the two sequences, where every element of the matrix is the numerical distance between the corresponding two elements of the sequences, plus the smallest neighboring element from the previous row and/or column. The very last element of the matrix gives us a number that we can use as the shortest relative distance of the two sequences. After this is done the algorithm is pretty easy. We just go through every stroke of every kanji, sort their distances from the mouse drawn strokes, and we have a list of kanji in the order of their distance from our writing. This is what the blog suggested, and that’s exactly what I tried to implement.

The modified algorithm for Levenshtein distance is simple. Let me show you with pseudo-code:

double compare(SEQUENCE a, SEQUENCE b)
{
  int n = a.length;
  int m = b.length;
  // Create a n*m matrix of floating point numbers.
  double matrix[n][m]; 

  loop x from 1 to n {
    loop y from 1 to m {
      // Set the cell of the matrix at x,y to the distance of sequence points.
      matrix[x][y] = distance(a.pointarray[x],b.pointarray[y]);

      // Add the smallest neighboring cell's value to the distance.
      if (x > 1 and y > 1)
        matrix[x][y] = matrix[x][y] +
                       lowest(matrix[x-1][y-1],matrix[x-1][y],matrix[x][y-1]);
      else if (y == 1 and x > 1)
        matrix[x][y] = matrix[x][y] + matrix[x-1][y];
      else if (x == 1 and y > 1)
        matrix[x][y] = matrix[x][y] + matrix[x][y-1];
    }
  }

  // The last element of the matrix is the shortest relative distance.
  return matrix[n][m];
}

Basically this is all that I got from the sources I mentioned and I had to invent everything else. The most difficult part was building the two sequences from the stroke order database and the stroke the user draws with the mouse for comparison. All strokes are first smoothed and the points of little importance removed. This is done relatively simply so I won’t explain the method.

The author of the blog suggested the coordinates of the points in the strokes for making the sequences, since the distance between two points are very easy to calculate. I tried this approach at first, but soon found that it’s not flexible enough.

Figure 1.: A stroke from the database. Figure 2.: Mouse-drawn stroke.

After cleaning them up, the data left from the two strokes are the points alone (the big red dots). Getting these points is a lot trickier, because I have to take into account curves that don’t have end points in-between, but let’s say we have it all done correctly. Because drawing with the mouse can result in quite ugly strokes, I have to recognize these two as similar. The distance would be pretty big if I just took the points and tried to calculate a distance, so I resized both strokes into 10000*10000 unit squares:

Figure 3.: The original strokes resized and placed on each other.

This worked relatively well, but you can see that if the user’s own stroke was flatter than the original, the calculated distance would still be pretty big. So much, that in many cases the algorithm found smaller distance between strokes that were very different instead of being similar, just because their size fit the drawn stroke better. After this I experimented quite a lot with many things, until I ended up using “model strokes”:

Figure 4.: Model strokes in zkanji used for handwriting recognition.

I made these in a text editor as a comma separated list of coordinate sequences. I had experimented a lot until I found the right shapes that were recognized best. Of course this in itself did not solve the problem of different sizes, so I made a single segment of each model stroke “elastic”. When I resized these strokes to the exact size of the user drawn stroke, the elastic segment didn’t hold its shape. It became shorter or longer if it didn’t fit the user drawn stroke exactly:

Figure 5.: Resized model stroke with an elastic segment and the user drawn stroke.

This finally worked satisfactorily, but it was very complicated and still not as precise as I wanted. So I finally had enough, scraped everything I had done so far (I kept the stroke models but removed the elastic segment) and rewrote the whole recognition engine in a single day, which is still used in the latest version of zkanji.  I only had to fine-tune it a bit to work better with the new hiragana stroke models. Yes, most of what I wrote until now was just a little introduction to the final algorithm.

After all these experiments I realized that the less precise the comparison is, the better. All this time I wanted it to be precise instead of the direct opposite, so I tried everything to move the stroke model points as close to the user drawn ones as possible. In the final version instead of calculating the distance of every point in the two sequences, I found, that calculating their relative angle works much better. The relative angle is not clear in many cases, so I just find the smallest angle between segments (neighboring points of a stroke), taking their direction into account as well. This way the actual size of the strokes and their parts do not matter much, so even the badly drawn mouse strokes can be matched with greater accuracy, yet less precision. The modified Levenshtein’s distance is still used, but I deleted all code so I had to write it again. (Not that it was difficult or anything.)

A number representing the distance between two strokes in itself is not much, because there can be many kanji with the same strokes in either a different order or different position. But since the most difficult part of the algorithm (at least the theory) was finding out how to calculate the distance between two strokes, everything else was “just” work. For the algorithm to be fast I calculated and stored which model strokes make up each kanji in the stroke order database beforehand.

  1. When the user draws a stroke with the mouse, it is checked against the model strokes, storing their distance from the user drawn stroke.
  2. Then the program loops through each kanji and checks which model stroke was their first (or second or whatever) stroke.
  3. The distance of the user drawn stroke and the model stroke used in a kanji is then added to a value. This value is the distance of the user’s handwriting and the kanji. Each kanji has one.
  4. The difference between the relative position of this stroke to the other strokes in the kanji, and the relative position the user drawn stroke to the other user drawn strokes also increase the value.  This does not require any special algorithm. I just add a multiplied constant, depending on which “grid position” each stroke is.
  5. Finally, adding these distances together for each stroke it’s easy to calculate the distance of any kanji and the user drawn one, thus making an order of every kanji in the database.

Write a comment if you want to implement your own algorithm based on mine and need help.

Advertisements
  1. Funbit
    January 10, 2011 at 4:28 am

    Thanks for the great explanation! Now it’s much more clearer 🙂

  2. asllearner
    January 30, 2011 at 9:18 pm

    I was wondering if you were considering some kind of kanji writing test, given that you are almost there in terms of recognizing what is written. I mean adding this into the study lists…given a reading or meaning, you write in the kanji (similar to the current type kana * option) (I dont mean just testing the order of a kanji that is given…)

  3. January 31, 2011 at 12:00 am

    Thee long-term study now allows the use of the kanji recognizer for writing in the kanji (from the next release – v0.57). I might expand this to be used for the normal word test too, but it won’t be in v0.57 yet.
    There is also a separate kanji test I have been working on for a long time but that will only be released later.

  4. asllearner
    February 2, 2011 at 10:50 pm

    thanks for the reply. I see in the latest version that there are questions in the long term study that ask you to write in the kanji, as you said. I get it.

    On the other hand, I dont quite understand how one part of the screen works. (actually, the interface is not as intuitive for me as I would like…but I am still getting the hang of it. perhaps after I understand it better, i will see why it is this way.) But in the kanji groups window, below the list of kanji, where the vocab for that kanji are (I think you should label the sections of the windows, as I really have ot guess what each thing is about) anyway at the top of that, there is a dropdown list with a plus sign next to it and the word filter next to that.

    My question is what does the “checked” option on the drop down list do, as I cant see that it is changing much; which things are supposed to be checked? the readings? I notice there is a button next to filter that filters for the currently selected reading (I wish I could select more than one reading at a time) but not the checked ones, and in fact I dont get what checking those does, either.

    and

    why does the color of the plus sign change sometimes. again, not quite intuitive, since I dont see any explanation of this anywhere.

    I also cant seem to get teh export and import function to work. Is there any way to import a list of words for vocab study? I have a list that I created in wakan and in other programs that I would like to import.

  5. February 3, 2011 at 11:30 am

    Some users use zkanji on their netbooks that have very small resolution, so there is no space for adding labels to sections. (At least as long as I’m willing to keep the current interface.)
    I agree that the interface is complicated until you get the hang of it. I should make a help file already…

    Every control that is right above the kanji vocabulary controls that vocabulary. The combo-box with the “checked” in the list has the following states:
    -Any: Show every word for the kanji. (unless there is a filter on.)
    -From group: words that only contain kanji from the current group.
    -Previous in group: (at least that’s what it was meant to be) words can only contain the current kanji and those kanji that come before that one in this same group.
    -Checked: words that only contain kanji from the checked groups. If you uncheck a group, the words with kanji only from that group will be hidden.
    -Examples: the selected words for that kanji.

    The color of the plus sign on the button depends on the selected kanji reading. When the word contains the kanji with the selected reading the plus sign is yellow, when some other reading is selected it is red. This is the same with the background of the selected words. When you press this button, the reading in the word will be selected on the right. (If the plus sign was yellow the correct reading was already selected so nothing else happens.)

    At the moment you can only import words to user dictionaries. Please post a feature request about this at the zkanji project page because I tend to forget things that are not written down. http://sourceforge.net/tracker/?group_id=265166&atid=1129026

  6. zkanji.99.kyoto@spamgourmet.com
    February 3, 2011 at 3:02 pm

    ok, I understand. I like the from previous in group feature. very clever.

    I look forward to seeing your help file, or at least a more descriptive tooltip.

    I have one more follow up question. What do the checkboxes on the kanji readings do? I originally thought they allowed me to filter on more than one reading for the vocab, but that doesnt seem to be it….

    meanwhile keep up the good work, and thanks for the answer. Onward ho..

  7. February 3, 2011 at 10:06 pm

    At the moment those checkboxes don’t do anything at all. In the previous version if a reading’s box wasn’t checked, its words were not added to the long-term study list, but that lost its meaning. I don’t yet know what they should be used for now.
    Originally I meant those to be used with a planned kanji card printing. One could select which readings to print, and which ones are not very important, though at the moment I’d rather concentrate on interactive features.

    • asllearner
      September 21, 2012 at 5:49 pm

      I started looking at your program again after a long hiatus, and I thought I would share some observations that continue to stay with me about it.

      1. I had an idea what you could do with the checkboxes in the readings list. I think they should filter the readings shown in the vocab list. I know you can press the “only show words that match the selected reading” button but that only allows you to check one reading at a time. It would seem natural to use the checkboxes to select several readings at once. In fact, now that I think of it, that is what I expected to happen before I asked you about it.

      2. help manual??

      3. make the size of the kanji/word groups user expandable. Also, the kanji selection area on the left shows the cursor for expandability, but on my system it seems not to be working. I will have to verify…

      4. allow word wrap on the vocab lists, so that I dont have to scroll for every entry.

      5. when set up a test, and choosing words, and looking at a set of duplicates, if I click the little minus sign to remove the item from my list of words to be studied, it removes the first meaning, not necessarily the meaning I want. If I continue and click again, it removes the word entirely, not the second entry. May be a bug.

      6. allow sort of kanji selection area by index values, like heisig, gakken, etc… Actually, of all my suggestions, this is probably the one I would find most useful, along with the next.

      7. allow ranges, like 1-99, or 1,2,3-5 in the dropdown next to the index selection area, and the other boxes in that section too…

      8. sometimes the buttons controling an area are on the side, sometimes above. confusing.

      9. Since you have the ability to parse written kanji, and use it well in the kanji tests, you should add that to the selection mechanism for kanji.

      10. When you take the long term study test, you have to select whether you knew the answer or not, etc. I think it would be good if there were some kind of automatic mode that determined if your answer were right and just moved forward. I know the obstacles to doing this, but I am saying, this is how many other such programs work, and the user experience is much better. I spend more time answering, less interacting with the program.

      11. allow clicking more than one item in the vocab lists.

      12. I think

      In general I think the program has many original ideas, and is nicely thought out but has a slight tendency to be overwhelming in some of the details, requiring a lot of setup and fine tuning to work..There It could be a little more user friendly. But I say that in a very friendly way…examples….two vocab lists, kanji vs. word lists, the test set up is complicated, the word selection is a little nonintuitive, I am just starting to understand the long term study list section. . … I repeat that I think you need to label or identify the purpose of sections, buttons, etc. more, since there is so much going on on the screen, either with more descriptive popups or something. Some of the existing labels are confusing, e.g. the “study” button, that shows the study lists, can be confused with the button “study this group”, and as another example, if I create a new group, the default name is New Group. But then if I want to add a word to a new group, the group New Group makes it sound like I would be adding it to a new group, and not the group New Group. In fact the word group is overused/overloaded in general (you use the word group, unmodified, in certain contexts, like “add to group”, but there are several different kinds of group, and which you mean requires thought each time). I admit these are piddling points, but the problem is there are quite a few things like this…I think you are clear about what you mean, but it might not be obvious to someone experiencing it for the first time. A little disambiguation could go a long way.

      I can see that there is a struggle between ease of use and customization and detail going on, but I think pushing some of the customization to the background could help…There should be a simple basic easily discernible path through the program, to smooth the learning curve, and then once that is clear, there should be access to the details. Now the program isnt really useful until you have mastered it.

      Sorry to be perhaps a bit blunt and stiff in my wording. Mostly tiredness on my part. I dont mean any criticism by this, merely to be direct about my thoughts, in the earnest wish for your good luck and success with the project, which it is apparent you have thought carefully and creatively about, and which is appreciated. I look forward to the next release, though no rush, just keep at it…

      asllearner

      • September 22, 2012 at 6:57 pm

        1. When I added those checkboxes long ago I was thinking of using them for some feature I can’t even remember now. It is possible to filter the words list to only show words that have the kanji with the checked readings but would it make sense? There are many seemingly good ideas that end up useless when implemented.

        2. Write it! 🙂 Programmers hate writing manuals… (or even comments in the code.)

        3. If you see a sizing cursor at the edge, that part is resizable. Maybe your resolution is small? zkanji wasn’t written with netbooks, tablets or other low-end machines in mind. The time I started writing it 6 years ago someone needed it to run on 800*600, so it is possible, but it really is best above a screen width of 1024 pixels or more.

        4. I considered this but created more problems than what it was worth. Maybe I could add a tool-tip for the word meaning if it is too wide, and that could wrap. What do you think?

        5. This do sound like a bug.

        6. Sorting by indexes wasn’t added because many indexes are not plain numbers. I can sorting for every kind of index but if the index is a combination of letters and numbers, it can be confusing for the user.

        7. I’m not sure I understand this. If I made all edit boxes into combo boxes for the “filters” above the kanji list, that would take up too much space and that wouldn’t work with the current layout. Changing the layout might be possible but I don’t yet know how. Also adding dropdown for indexes might be a bad idea. Wouldn’t that contain just too many numbers?

        8. Do you mean the controls for the kanji and word groups? I was hesitant when I made it that way, but it was easy to get used to and this is the best use of the available space in my opinion.

        9. I plan to do that.

        10. If the answer checking was automatic, it wouldn’t be possible to select between the 4 buttons to be able to influence when the word will be tested again. Also it is impossible to automatically decide whether you knew the meaning of a word or not, because there are long definitions and even if you made a typo the answer should still be considered correct. I don’t know programs that automatize this, and if one program does, it cannot be flexible at all.

        11. You mean multi select?

        12. I get this the most, I mean that the program is too complex. It is not something for beginner computer users for sure. There are many buttons and controls to deal with and it is understandable that people get confused. BUT. Adding labels would be impossible without reducing the useful area of the interface. The idea behind the layout is that the kanji, words etc. get the most space, the controls are “secondary” in a way. I don’t mind it if you point out these clearly. Such straightforward criticism helped me a lot before as well. I’m willing to change anything that makes the program easier to use once you mastered the controls, but not if it is only for helping the newcomers. I use it all the time, and I don’t want any changes that make using it more difficult for myself.

        Having said that, I haven’t thought about it, but it might be possible to change the interface in ways that wouldn’t make it worse for experienced users either. If you can think up something you can share that and I will think about changing the interface. Adding labels everywhere would reduce the area for the useful parts, so I don’t want that, but that’s why there is a the tool-tip for most controls. Any other changes, like reorganizing some buttons, moving controls to different places, removing controls people never use and instead add them on some tool window that can be shown and hidden etc. these are all possibilities. Hiding whole parts of the interface sounds good but it is not technically possible (at least without making it troublesome for experienced users). I tried.

    • asllearner
      September 21, 2012 at 6:38 pm

      actually, i just remembered one or two more suggestions I had thought of…drag and drop functionality, e.g. dragging a kanji from the kanji selection area to the kanji list, or to the dictionary…I am feeling a bit ambivalent about the right click then find the right place to click in the table system. It puts a lot at your finger tips, but I am not sure that a simple context menu might not be easier to use. I am still trying to get used to it. I think it might be easier if this auto popped up, with perhaps another mechanism for showing the kanji info…

      and while I am at it…the pop ups in the sample sentences are a bit difficult to read, since they seem to repeat the word (as kanji, so いう pops up as 言う), and then gives the kana. I wonder if it would be good to have an option that showed the whole sentence’s kana/romaji reading straight. since you are looking the readings up anyway, might just as well show them all at once.

      Also, if I click the popup, it sends me to that word in the dictionary, which is great, but it is then a pain to get back to the original sentence! not nice.

      It would be nice to be able to hide some of the major sections, kanji selection, groups, and dictionary, for example, not just expand dictionary.

      I should add that I think you are doing an excellent job at being careful establishing the quality of your databases, and that of all the kanji/vocabulary trainers out there, yours has the potential to be the best…

      • September 22, 2012 at 7:02 pm

        These are all good ideas to consider. Changing how the example sentences are displayed is dangerous territory, because I plan to add an example sentences browser, though I plan it for a very long time now and I don’t know when will it come true.

        >> Also, if I click the popup, it sends me to that word in the dictionary, which is great, but it is then a pain to get back to the original sentence! not nice.

        I can’t reproduce this or I just misunderstand what you mean. The same sentence is displayed even when clicking the words in the example.

    • asllearner
      September 21, 2012 at 6:50 pm

      ok, now I am getting into annoying territory:
      allow addition of multiple kanji to the kanji list through paste from clipboard. If I have a group of kanji from some source, and I want to add all of them to a list, I have to add each individually it seems, and I have to search for each one first…

      I will stop now. Sorry…

      • asllearner
        September 21, 2012 at 6:51 pm

        I mean i am annoying, not that I am annoyed…

      • September 22, 2012 at 7:04 pm

        You can make the kanji list show the kanji in the clipboard, select them all with ctrl+a and add them together to a group like that. I admit this is a roundabout way to do things, but you have to do with it for now.

  8. asllearner
    September 23, 2012 at 8:21 am

    again, sorry for dumping such a lot on you at once, but I appreciate the time you took for thoughtful answers. Overall, I agree that some of my suggestions may be impractical or of very low priority. I just wanted to put my two cents in as recognition of your effort. I have no expectations.

    1. checkboxes: I think it does make some sense, for one, I find that being able to look at kanji with just one reading is helpful for studying, since I can connect all those words together in my mind, so I am not entering the reading in the dictionary and finding words that way. This way would be much easier. Doing it with multiple readings would be good because some readings are not as common or interesting, and i might want to filter them out, for example. And, lastly, since nothing is being implemented there, this is wasting space 🙂 as it is.

    2. Manual: I have thought about it, but I havent quite mastered it well enough. But I completely understand what you mean. I occasionally make a webpage or two, and documenting bites, and lack of documenting bites back.

    3. Resizing. You may be right. let me see. I am running xp on a laptop, and vista on a desktop. I will look into it. Still, resizng kanji/word groups would be nice.

    4. wordwrap: shame. I think even a tooltip, yes, would be nice.

    5. let me see if it happens on the other machine…I will verify it is happening.

    6. sort by index: I see. Some indexes are just numbers, like heisig, gakken, henshall (all of which I use), for example. at least these should be easy to implement, no? I think this is a significant gap, since many other programs do offer this. Not that you should do as others do, but just to note that it seems to be useful…

    7. numerical ranges: I just realized I made a mistake when I typed that. I meant the numerical text/input boxes not the dropdowns (such as the text box next to the index dropdown, or th jlpt, joyou grade, strokes boxes, for that matter). It would be nice to, for example, select kanji 20-30 from the gakken index, and make a kanji group from them.

    8. Buttons on side: Yes, I think you are right. better spacewise, and easy enough to get used to.

    9. select by written kanji: yay!

    10. auto-answering tests: I understand what you are talking about. In order to implement what I am talking about you might have to adjust your model a bit. I am going to try to think this through a bit more clearly and I will explain in more detail later.

    11. multi-select: yes, exactly. Pretty much standard in most GUIs for lists…

    12. Complexity. Yes I really should have been more specific. It was an opening salvo in what is both a forest and trees problem. I merely have a gut feeling that something is missing, but I haven’t placed my finger on it. I think it is one of those subtle things that one can’t see without both going wide and deep in one’s thinking. It is hard to figure out which trees are out of place, or what is happening to the forest as a whole. This is a really powerful program and potentially a new paradigm, but it needs time and maturity to evolve. Changing one thing changes everything else.

    Some trees: As to labels, you are right, but slightly more descriptive tooltips might help. At some point I may take the liberty of writing some for you as examples. Also, you could add a context-help button (maybe to menu bar), that would popup help balloons on hover or click. Some programs I use have this,and it really smooths the learning curve. Some of the words that I think confuse me are: the word “group” overused, as mentioned, you mix up “translation” (in the right click context menu) and “dictionary”, one popup says only match the selected reading…selected how? you mean highlighted, the selection (checkbox) doesn’t work, viz. comment no. 1. In fact, the distinction in function between selecting by checkbox and selecting by highlight is also not clear in the kanji/word group area.

    It seems that the kanji card feature is not implemented?? will it be? this too confused me.

    13. sentences. A sentences browser sounds interesting, but perhaps overwhelming. Just putting the entire reading up, so it can be read normally would perhaps be less onerous, and could be a first but quite value added step.

    14. using the vocab list: type 行う in the dictionary. show the sentences.Sentence one shows: 結果次第では、両社に対して2月以来の行政指導が行われる。
    hover over 結果, and click . けっか appears in the dictionary (the sentence is the same).
    To get back to 行う in the dictionary I have to click the dropdown and find 行う again. If I have clicked many words, it is all the way at the bottom. I wish I could do it differently. somehow lock the dictionary?

    15. selecting from clipboard: zannen, yo….

    16. drag and drop. kudasai.

    phew!

    17. Overall assessment: OK, all, that being said, I think my comment that there needs to be a “path” through the program comes closest to what I think is missing. I don’t know if that means some kind of integrating paradigm (that could be a trap…) or something else. I know I need to articulate this a bit more clearly, and translate this to the tree level, which I will do as I keep using it…. I understand what you said about not making it more difficult for experienced users, or yourself. You answers to the above help me understand the limits of what is possible and what is open to suggestion, and of your particular inclinations. I am not a programmer by trade, though I have done a little here and there, so I am really approaching this as a user; I don’t know what is easy or difficult to program, but I know what is easy to use or not. And, as a user, I appreciate being able to give feedback, and have it gracefully received. Thank you very much…and look forward to seeing it keep evolving….

  9. asllearner
    September 23, 2012 at 8:23 am

    🙂

    • October 27, 2012 at 7:01 pm

      Oops. I should really look back here more often. There are a lot of things you wrote and I’m not sure it helps anything if I try to answer because currently I’m not working on zkanji. (For anyone worrying, don’t, I’ll continue.) Once I’m back on it I will be more open to discussing changes. When I’m distracted with other things and not touching the code for weeks or months, I don’t feel like saying “yes I will do this and that” because I don’t know when and which is higher priority.

      • asllearner
        October 28, 2012 at 1:08 am

        no sweat…I understand. I’ve got a big back burner myself…be well, and keep on truckin…

  10. The Wondering User
    January 11, 2013 at 7:07 am

    Um, where exactly do I access the “Handwriting Recogniser” tool? I’ve tried many things, but still cannot make the window (as shown in one of the screenshots) to appear…

    I’ve to go online and use this (http://kanji.sljfaq.org/) instead. It is imperative to be able to do it offline as well. So, anyone?

    • The Wondering User
      January 11, 2013 at 7:41 am

      Okay, I finally got it. I didn’t know you have to press spacebar in the search to activate it… :/
      http://sourceforge.net/p/zkanji/bugs/5/

      And there’s no “button” for activating it as stated by the answerer… Oh well.

      • The Wondering User
        January 11, 2013 at 9:39 am

        I found the button finally—directly to the left of the kanji’s search box. (I really had no idea what he meant by “dictionary window”).

        I truly apologise for my incompetence. And I forgot to say this:

        THANK YOU!
        I’m grateful to be able to stumble upon this great tool of learning! 😀

        Cheers,
        bunalz.

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: