LinuxQuestions.org
Latest LQ Deal: Latest LQ Deals
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices


Reply
  Search this Thread
Old 06-05-2021, 10:58 AM   #1
w1k0
Senior Member
 
Registered: May 2008
Location: Poland
Distribution: Slackware (personalized Window Maker), Mint (customized MATE)
Posts: 1,297

Rep: Reputation: 230Reputation: 230Reputation: 230
FontForge: kerning for Hebrew font does not work


I designed a Paleo-Hebrew font using FontForge 20190801. It has two sections with the same glyphs: 1) ASCII between “$” (ASCII 36) and “z” (ASCII 122) and 2) Unicode from U+05D0 (aleph) to U+05EA (taw). So using the first section you can type Paleo-Hebrew using the standard keyboard layout, and using the Unicode section you can type using [Ctrl]+[Shift]+[U] and entering code like 05d0 for aleph.

In both of these sections, I implemented kerning for some pairs of characters. Kerning for ASCII section works – kerning for Hebrew section does not work. I tried various scenarios – I describe one of them below. In all cases, the result was the same: the kerning for the Hebrew section did not work.

Here is the Kern Pair Closeup window with a pair of glyphs U+05D2 and U+05DC and kerning –475. In this case, the result displayed by FontForge is incorrect because both glyphs overlap.

Click image for larger version

Name:	lq1.png
Views:	8
Size:	21.5 KB
ID:	36529

Here is the Kern Pairs window with four pairs defined. As you can see, displayed kerning is valid for both left-to-righ glyphs in the ASCII section and right-to-left glyphs in the Hebrew Unicode section, even though the previous window displayed the wrong result for the third pair of glyphs. So the images displayed by the different FontForge windows are inconsistent in this case.

Click image for larger version

Name:	lq2.png
Views:	6
Size:	10.2 KB
ID:	36530

Here is an OpenOffice Writer document using all four pairs of glyphs. As you can see, kerning works for the glyphs in the ASCII section, but not for the glyphs in the Hebrew Unicode section.

Click image for larger version

Name:	lq3.png
Views:	7
Size:	65.1 KB
ID:	36531

I have tried various methods to get FontForge to generate a Hebrew font using kerning, but all of them have failed with exactly the same result for the OpenOffice Writer document.

How can I get FontForge to generate the correct Hebrew font using kerning?
 
Old 06-05-2021, 05:29 PM   #2
w1k0
Senior Member
 
Registered: May 2008
Location: Poland
Distribution: Slackware (personalized Window Maker), Mint (customized MATE)
Posts: 1,297

Original Poster
Rep: Reputation: 230Reputation: 230Reputation: 230
No one has replied so far, so this could be a complicated issue.

Yesterday, after all my attempts were unsuccessful, I decided to install the current version of FontForge in the hope that it would solve my problems as I am using a relatively old version 20190801. Unfortunately, I was unable to compile the current version.

Today I downloaded the version 20201107, the so called 20th Anniversary Edition, which should definitely work, but I also failed to compile.

I have tried two FontForge compilation methods...

1.

Code:
git clone https://github.com/fontforge/fontforge
cd fontforge
mkdir build
cd build
cmake -GNinja ..
ninja

.
.
.
[281/281] Linking C executable bin/fontforge
FAILED: bin/fontforge 
: && /usr/bin/cc  -O2 -g -DNDEBUG   fontforgeexe/CMakeFiles/fontforgeexe.dir/main.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/alignment.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/anchorsaway.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/autowidth2dlg.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/basedlg.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/bdfinfo.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/bitmapdlg.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/bitmapview.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/charinfo.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/charview.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/clipui.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/combinations.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/contextchain.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/cursors.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/cvaddpoints.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/cvdebug.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/cvdgloss.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/cvexportdlg.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/cvfreehand.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/cvgetinfo.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/cvgridfit.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/cvhand.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/cvhints.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/cvimportdlg.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/cvknife.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/cvpalettes.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/cvpointer.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/cvruler.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/cvshapes.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/cvstroke.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/cvtranstools.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/deltaui.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/displayfonts.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/effectsui.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/encodingui.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/fontinfo.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/fontview.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/freetypeui.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/fvfontsdlg.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/fvmetricsdlg.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/gotodlg.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/groupsdlg.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/histograms.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/images.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/justifydlg.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/kernclass.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/layer2layer.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/lookupui.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/macencui.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/math.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/metricsview.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/mmdlg.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/nonlineartransui.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/openfontdlg.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/pluginui.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/prefs.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/problems.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/pythonui.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/savefontdlg.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/scriptingdlg.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/scstylesui.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/searchview.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/sftextfield.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/sfundo.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/showatt.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/simplifydlg.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/splashimage.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/startui.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/statemachine.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/tilepath.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/transform.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/ttfinstrsui.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/uiutil.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/usermenu.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/windowmenu.c.o fontforgeexe/CMakeFiles/fontforgeexe.dir/wordlistparser.c.o  -o bin/fontforge  lib/libgdraw.a lib/libfontforge.so.4 /usr/lib/libpython3.7m.so /usr/lib/libfreetype.so /usr/lib/libxml2.so /usr/lib/libgio-2.0.so /usr/local/lib/libspiro.so /usr/local/lib/libuninameslist.so /usr/lib/libreadline.so /usr/lib/libgdk-3.so /usr/lib/libpangocairo-1.0.so /usr/lib/libpango-1.0.so /usr/lib/libgdk_pixbuf-2.0.so /usr/lib/libcairo-gobject.so /usr/lib/libcairo.so /usr/lib/libgobject-2.0.so /usr/lib/libglib-2.0.so -lc /usr/lib/libm.so -Wl,-rpath,/root/DATA/programs/fontforge/build/lib:/usr/local/lib: && :
/usr/lib/libreadline.so: undefined reference to `tgetnum'
/usr/lib/libreadline.so: undefined reference to `tgetent'
/usr/lib/libreadline.so: undefined reference to `tgetstr'
/usr/lib/libreadline.so: undefined reference to `tgoto'
/usr/lib/libreadline.so: undefined reference to `UP'
/usr/lib/libreadline.so: undefined reference to `BC'
/usr/lib/libreadline.so: undefined reference to `tputs'
/usr/lib/libreadline.so: undefined reference to `PC'
/usr/lib/libreadline.so: undefined reference to `tgetflag'
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
2.

Code:
git clone https://github.com/fontforge/fontforge
cd fontforge
mkdir build
cd build
cmake ..
make -j4

.
.
.
[ 98%] Building C object fontforgeexe/CMakeFiles/fontforgeexe.dir/uiutil.c.o
[ 98%] Building C object fontforgeexe/CMakeFiles/fontforgeexe.dir/usermenu.c.o
[ 98%] Building C object fontforgeexe/CMakeFiles/fontforgeexe.dir/windowmenu.c.o
[100%] Building C object fontforgeexe/CMakeFiles/fontforgeexe.dir/wordlistparser.c.o
[100%] Linking C executable ../bin/fontforge
/usr/lib/libreadline.so: undefined reference to `tgetnum'
/usr/lib/libreadline.so: undefined reference to `tgetent'
/usr/lib/libreadline.so: undefined reference to `tgetstr'
/usr/lib/libreadline.so: undefined reference to `tgoto'
/usr/lib/libreadline.so: undefined reference to `UP'
/usr/lib/libreadline.so: undefined reference to `BC'
/usr/lib/libreadline.so: undefined reference to `tputs'
/usr/lib/libreadline.so: undefined reference to `PC'
/usr/lib/libreadline.so: undefined reference to `tgetflag'
collect2: error: ld returned 1 exit status
fontforgeexe/CMakeFiles/fontforgeexe.dir/build.make:2063: recipe for target 'bin/fontforge' failed
make[2]: *** [bin/fontforge] Error 1
CMakeFiles/Makefile2:1287: recipe for target 'fontforgeexe/CMakeFiles/fontforgeexe.dir/all' failed
make[1]: *** [fontforgeexe/CMakeFiles/fontforgeexe.dir/all] Error 2
Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2
* * *

I got the same error messages when compiling the current version and 20201107, so something is wrong with my system as 20201107 is undoubtedly correct.

Maybe with your help I can compile FontForge and maybe one of this newer versions will solve my problem.

[EDITED 1]

As you can see, building the program is successful in both cases – the problem appears in the linking stage.

[EDITED 2]

Here are the lines of code in question (the ones in the middle):

fontforgeexe/CMakeFiles/fontforgeexe.dir/build.make:2063:
Code:
bin/fontforge: fontforgeexe/CMakeFiles/fontforgeexe.dir/link.txt
        @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=/root/DATA/programs/fontforge/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_77) "Linking C executable ../bin/fontforge"
        cd /root/DATA/programs/fontforge/build/fontforgeexe && $(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/fontforgeexe.dir/link.txt --verbose=$(VERBOSE)
CMakeFiles/Makefile2:1287:
Code:
fontforgeexe/CMakeFiles/fontforgeexe.dir/all: gdraw/CMakeFiles/gdraw.dir/all
        $(MAKE) -f fontforgeexe/CMakeFiles/fontforgeexe.dir/build.make fontforgeexe/CMakeFiles/fontforgeexe.dir/depend
        $(MAKE) -f fontforgeexe/CMakeFiles/fontforgeexe.dir/build.make fontforgeexe/CMakeFiles/fontforgeexe.dir/build
Makefile:160:
Code:
all: cmake_check_build_system
        $(CMAKE_COMMAND) -E cmake_progress_start /root/DATA/programs/fontforge/build/CMakeFiles /root/DATA/programs/fontforge/build/CMakeFiles/progress.marks
        $(MAKE) -f CMakeFiles/Makefile2 all
[EDITED 3]

I am using a 32-bit system with most of the programs compiled for i586.

Last edited by w1k0; 06-05-2021 at 05:53 PM.
 
Old 06-05-2021, 11:52 PM   #3
w1k0
Senior Member
 
Registered: May 2008
Location: Poland
Distribution: Slackware (personalized Window Maker), Mint (customized MATE)
Posts: 1,297

Original Poster
Rep: Reputation: 230Reputation: 230Reputation: 230
It turns out that something strange is happening with the kerning of the Hebrew text.

Let us look at the screenshot below...

Click image for larger version

Name:	lq01.png
Views:	7
Size:	51.4 KB
ID:	36532

Be sure to read the examples above from right to left. To be able to compare my comments and the image, please download it.

At the top, I wrote down information about the kerning used. In turn, you can read: 1) gimel lamedh –475; 2) aleph lamedh –275; 3) aleph gimel –125.

So the gimel should be closer to the lamedh 475 points than it is and the same rule applies to two consecutive pairs of letters.

Now look at the left column of the table. I wrote “gimel” in the first line, “gimel lamedh” in the second, “gimel lamedh gimel” in the third, etc.

As you can see the “gimel lamedh” pair on the second line does not use kerning, but does on the third line. This pattern repeats itself in the following lines.

To understand what is happening here, take a look at the right column of the table.

“Gimel lamedh” on the first line does not use kerning. “Gimel lamedh” followed by “aleph” on the second line uses kerning. When comparing “gimel lamedh” sequences that use kerning in the right and left columns, you can see that this in the right column uses less kerning.

This is not actually the kerning set for “gimel lamedh” (–475), but for “aleph lamedh” (–275).

The idea of setting kerning to –275 for “aleph lamedh” was to bring aleph closer to lamedh. Meanwhile, aleph preceded by a lamedh affects the gimel that precedes the lamedh. So kerning works in the opposite direction and not on the previous character, but on the penultimate character.

The same thing happens on the fourth line. The idea was to bring aleph followed by gimel closer to it by 125 points. Meanwhile the aleph preceded by a gimel affects the letter preceding the gimel – in this case lamedh.

The fifth line is red because I turned kerning off for this paragraph, but as you can see, this strange kerning is exactly the same as in the previous line.

So kerning works for Hebrew text, but it works wrong: in the opposite direction and not on adjacent letters, but on the penultimate letter. Moreover, this strange kerning is stubborn and works even if kerning is turned off for the paragraph in question.
 
Old 06-07-2021, 09:16 AM   #4
w1k0
Senior Member
 
Registered: May 2008
Location: Poland
Distribution: Slackware (personalized Window Maker), Mint (customized MATE)
Posts: 1,297

Original Poster
Rep: Reputation: 230Reputation: 230Reputation: 230
I have complicated the above explanation. The simple explanation is as follows:

1. When I write gimel and then lamed, nothing happens even though lamed should be attracted to gimel.

2. When I continue to write aleph, lamed should pull the aleph closer to it, but instead pulls the gimel closer using the kerning value for the aleph.

So this kerning works from left to right instead of right to left and affects the previous character using the kerning value for the next character.
 
Old 06-08-2021, 01:15 AM   #5
shruggy
Senior Member
 
Registered: Mar 2020
Posts: 2,321

Rep: Reputation: Disabled
Have you tried to explicitly include RLM in the text? Does it render the same then?
 
1 members found this post helpful.
Old 06-08-2021, 11:28 AM   #6
w1k0
Senior Member
 
Registered: May 2008
Location: Poland
Distribution: Slackware (personalized Window Maker), Mint (customized MATE)
Posts: 1,297

Original Poster
Rep: Reputation: 230Reputation: 230Reputation: 230
I did. I used the [Ctrl]+[Shift]+[U] keyboard shortcut followed by 05D2 for gimel and 05DC for lamedh. OpenOffice Writer uses the DejaVu Sans font for the text written this way. After writing these pairs of characters, I selected them and used the scrollable list on the Formatting toolbar to select the Paleo-Hebrew Abjad font. The resulting text ignores the kerning set in FontForge.

When I use Insert | Special Character... menu to insert these characters I get the wrong kerning.

Thanks for the answer anyway. My questions are not left unanswered now.

Click image for larger version

Name:	lq02.png
Views:	5
Size:	74.2 KB
ID:	36550

[EDITED]

Sorry, I missed your Wikipedia link. When I use the [Ctrl]+[Shift]+[U] keyboard shortcut followed by 200F switching to right-to-left, both of the above methods for inserting characters produce the same result as in the second case above.

Last edited by w1k0; 06-08-2021 at 11:39 AM.
 
Old 06-09-2021, 01:16 AM   #7
shruggy
Senior Member
 
Registered: Mar 2020
Posts: 2,321

Rep: Reputation: Disabled
Well, you could download sources of some well-established open source Hebrew fonts and look into them to see how they handle kerning. Culmus project comes to mind. It makes use of some Python scripts as well, provided in the directory fontforge_python.

Last edited by shruggy; 06-09-2021 at 01:17 AM.
 
1 members found this post helpful.
Old 06-09-2021, 06:39 PM   #8
w1k0
Senior Member
 
Registered: May 2008
Location: Poland
Distribution: Slackware (personalized Window Maker), Mint (customized MATE)
Posts: 1,297

Original Poster
Rep: Reputation: 230Reputation: 230Reputation: 230
I was thinking of taking a look at a Hebrew font but was busy working on my font – see the next section of this post for details.

Yesterday I tried fonts from the Culmus project. (Thanks for this recommendation.)

As it turns out, all of these fonts use several to sixty lookup tables. Some of them use traditional pair kerning for ASCII section and sophisticated kerning for Hebrew letters, and others use these sophisticated lookup tables for all letters.

I implemented a simple pair kerning in my font, i.e. the old style kerning. To implement these sophisticated lookup tables, I need to learn how to work with them.

So it seems that this thread is solved at least as far my original question is concerned. I think I will release my font as is soon. I will let you know here when it is available to the public.

Regarding the kerning in the Hebrew Unicode section, perhaps I will release an improved version of my font in the future, or someone will contribute to kerning the Hebrew Unicode section. We will see...

Thank you very much for your help!

* * *

If you are not interested in reading blogs, skip this section of my post.

In late March, I designed my informal logo using Phoenician font. Then I read about various ancient alphabets (abjads), and in late May I discovered the Paleo-Hebrew abjad. As a result, I designed my semi-formal logo using Paleo-Hebrew letters.

At this point I had three Paleo-Hebrew letters, so I decided to design the entire abjad. I used OpenOffice Drawing for this.

When I started designing a Paleo-Hebrew font with FontForge, I found the SVG and EPS files produced by OpenOffice Drawing to be of very poor quality and not suitable for use as a source for FontForge. So I exported the Paleo-Hebrew glyphs to PNG files and designed the entire abjad a second time using FontForge.

As a result, it turned out that glyphs designed on the basis of PNG files have different weights – some are thinner and others are thicker.

So last night I designed this abjad for the third time using Inkscape. Glyphs that use internal curves, or curves created by splitting a path, have many redundant anchor points, but it is easy to simplify the curve with Inkscape.

Yesterday I implemented kerning again in the current version of my font. At the moment it only works for letters in the ASCII section of the font.

The bottom line is: Goodbye OpenOffice Drawing – hello Inkscape!
 
Old 06-12-2021, 06:52 PM   #9
w1k0
Senior Member
 
Registered: May 2008
Location: Poland
Distribution: Slackware (personalized Window Maker), Mint (customized MATE)
Posts: 1,297

Original Poster
Rep: Reputation: 230Reputation: 230Reputation: 230
This post includes a solution of the problem

The Hebrew-Culmus font is complicated so I downloaded some free Hebrew fonts including Horev CLM Heavy: https://www.hbrewfont.net/download.php?id=737273

This font does not use sixty or a dozen kerning tables, but only one, which makes it easy to analyze. As a result, I was able to implement a kerning table for the glyphs from the Hebrew Unicode section. In this post, I show you how to solve this problem with FontForge.

1.

First, you should go to the Hebrew Unicode section and rename the available glyphs except geresh and gershayim. To do this, highlight the glyph, use the right mouse button, run the Glyph Info... option and in the Glyph Name item use the scrolling list and select a PostScript name starting with afii..., e.g. afii57664 for aleph. Repeat this process for all Hebrew letters.

2.

Go to the Element | Font Info... window, select the Lookups option, select the GPOS tab, and use the Add Lookup button. In the Lookup Name box, type something like kerning-rtl.

Then go to the top of this window and select Pair Position (kerning) option from the Type list.

Then, under the Feature column, click the down arrow next to New and select kern Horizontal Kerning. As a result, kern appears in the left column and DFLT{dflt} latn{dflt} hebr{dflt} appears the right column.

Click the down arrow next to that string, and select and then delete positions DFLT | dflt and latn | dflt. As a result, you stay in hebr | dflt only.

Finally, select Right To Left and Ignore Combining Marks options in the Lookup window.

As a result, you get a kerning-rtl lookup on the GPOS tab. When it is highlighted, click the Add Subtable button and accept the name kerning-rtl-1.

At this point, the Kerning format window appears. I have not use it so you can click OK.

3.

As a result, the Lookup Subtable, kerning-rtl-1 window will appear. This is where you kern the Hebrew letters from the Unicode section.

The table has four columns: 1) First Glyph Name; 2) Second Glyph Name; 3) Δx #1, and 4) Δx_adv #1.

1) and 2) apply to consecutive pairs of glyphs, but remember that in this case we are prepare kerning to write from right to left, so the first character is displayed below to the right of the second character.

3) and 4) relate to the kerning value: in this case you will use the same values for both of them. The first sets the kerning between the selected characters, the second matches the kerning before the first character, since this kerning for right-to-left writing works from left to right.

Right now you have afii57664 (aleph) in the First Glyph Name and Second Glyph Name columns, and the Δx #1 and Δx_adv #1 columns have the same value as –286.

When I set the kern to 319 pair of Hebrew letters, FontForge only guessed the correct once. So these suggested values are a hindrance rather than a help.

After kerning is set to aleph-aleph, you need to move on to the next letters.

For the Paleo-Hebrew Abjad font, I have three classes of characters: 1) Hebrew letters with names afii57664 to afii57690; 2) geresh and gershayim named uni05F3 and uni05F4; and the period named period.

To set kerning for a pair of letters such as aleph-geresh, click the New position, when you are in the first column enter the letter a and select afii57664 from the list, when in the second column enter the letter u and select uni05F3 from the list, finally set the same kerning in the next two columns.

Click image for larger version

Name:	lq04.png
Views:	2
Size:	37.9 KB
ID:	36594

4.

Since I had kerned all the Paleo-Hebrew letters from the ASCII section beforehand, I ran a separate FontForge instance and opened the Kern Pairs window using the View | Combinations | Kern Pairs option. I used the information in this window to clone an already defined kerning.

Click image for larger version

Name:	lq03.png
Views:	2
Size:	13.8 KB
ID:	36593

So I copied the kerning for letter pairs from the ASCII section to the letter pairs of the Hebrew Unicode section.

The first item in the Kern Pairs screenshot is kerning for the apostrophe-aleph character pair. In the Hebrew Unicode section, the apostrophe becomes geresh.

In the Lookup Subtable, kerning-rtl-1 window screenshot the highlighted pair is aleph-geresh (read right to left).

Correct kerning for apostrophe-aleph from ASCII section is valid for aleph-geresh from Hebrew Unicode section.

So, if you set kerning for an ASCII section, you have to read consecutive entries from right to left to find the correct kerning for letter pairs from the Hebrew Unicode section.

[EDITED]

If you exit the Lookup Subtable, kerning-rtl-1 window, which is recommended for saving partial work, you can reopen it using the Element | Font Info... menu and selecting the Lookups | GPOS | kerning-rtl | kerning-rtl-1 position. Then click the Edit Data button.

* * *

In the previous post I mentioned that I am letting you know here when I release the Paleo-Hebrew Abjad font. And so I do.

I am working on it right now. The last night I prepared a Hebrew keyboard map for Linux and added a macro to the README file that flips the text from left to right to right to left.

I can not guess my next ideas. To be sure I am finished, at least 24 hours have to pass without changes to the files from the Paleo-Hebrew Abjad package. So be patient.

Last edited by w1k0; 06-12-2021 at 07:28 PM.
 
  


Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
[SOLVED] Noto Sans font kerning issues laqq3 Slackware 3 09-16-2018 09:09 PM
[SOLVED] Font rendering issues (kerning, etc.) with Firefox 52.7.0 and XFCE 4.12 arcctgx Linux - Desktop 8 04-20-2018 11:30 AM
[SOLVED] Lookup disappears in OTF font - Fontforge Subhraman Sarkar Linux - General 5 12-16-2015 08:24 PM
Does Abiword have hyphenation? Kerning good? ltd602 Linux - Software 2 05-11-2005 08:18 PM
slack fonts problem in printing (bad kerning) codec Slackware 3 12-07-2003 06:57 PM

LinuxQuestions.org > Forums > Non-*NIX Forums > Programming

All times are GMT -5. The time now is 01:01 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration