The cyrillic font uses a keyboard mapping based on the Hershey fonts as distributed.
There are four or more types of cyrillic keyboard mapping in use, so a glyph table has been included to assist anyone trying to use it.

Likewise for the Greek font, a glyph table is included and PCB users will need to determine how they want to map the symbol to their keyboard. Users will have to add their own accents to the Greek vowels. There is a glyph table to show the Greek mapping as well.

The issue of CJK (Chinese, Japanese and Korean) glyphs was looked at next.

The GNU unifont bdf is available from unifoundry, which has released the GNU unifont as a free and open source font for use in FOSS.

Chinese, Japanese and Korean (CJK) glyph rendering is not trivial and the approach taken by others has been to use bitmapped glyphs for resolutions below 16x16 pixels, and vector font formats for larger sizes.

The GNU unifont project has an essentially complete set of CJK glyphs in 11x11, 12x12, 13x13, 14x14, 15x15 and 16x16 pixel bitmap formats as produced and released as a free and open CJK font by Firefly around 2005.

The GNU unifont project includes around 20,000 CJK symbols that can now be used in gEDA PCB if required.

The
batch converted set of CJK symbols are based on the 16x16 bitmapped Firefly CJK font set and
have had contiguous pixels vertically, horizontally and diagonally
converted into SymbolLine[] strokes, and orphan pixels if any, are
rendered as a dot. A default stroke width of 800 has been used.

The
smaller 11x11, 12x12 13x13, 14x14, 15x15 bitmapped CJK glyphs also
could be easily converted if necessary, but they may lack the fidelity
of the 16x16 glyphs which can be scaled anyway within PCB, so I have not
bothered to convert the lower resolution bitmaps at this stage.

I have finished off the pcbGlyphTool code I used to batch convert Chinese/Japanese/Korean (CJK) Firefly bitmap glyphs to pcb symbols

5)
steps through the single integer representation of the rows and scores
each pixel, putting the score into the integer per pixel row array

6) exports consecutive rows of pixels as SymbolLine strokes

7)
steps through each column of scored pixels and does further scoring of
each pixel, putting the score into the integer per pixel column array
8) exports consecutive columns of pixels as a SymbolLine strokes

8.1) optionally exports a symbol without diagonal row detection and conversion to strokes

9) creates left and right skewed arrays of the final pixel scores after column and row export

10)
steps through the single integer representation of the right skewed
array columns and detects diagonals, exports SymbolLine strokes
11)
steps through the single integer representation of the left skewed array
columns and detects diagonals, exports SymbolLine strokes

12) identifies any left over/orphan pixels and exports a SymbolLine stroke to depict a "dot"

This
produces output containing a series of geda PCB symbol definitions for
each glyph, and is what is in the gz file linked to above.

Until
we have a mechanism for seamlessly adding unicode symbols or rendering
ttf fonts, users needing glyphs can search the gzipped archive and cut
and paste their needed symbol, and relabel it to assign it to an unused
ascii character.

The
utility compiles easily with gcc and one need only feed it with a bdf
symbol definition or a stream of bdf symbol definitions to produce PCB
symbols for insertion into a PCB layout, with suitable re-labeling to
comply with the current limitations imposed by the implementation of
"Symbol" which only copes with ~ 127 symbols.

It should convert any bdf formatted
bitmap up to 16x16 pixels into SymbolLine strokes replacing contiguous
pixels in horizontal, vertical or diagonal directions, and it will
render remaining "orphan pixels" as a dot.

Users
requiring a few glyphs can now include them and map them to spare ASCII
symbols until there is a way to more easily include unicode symbols,
i.e.

I
expected to walk away from the computer for at least a few minutes to
convert the 20,000+ CJK bdf archive but it was done in seconds, meaning
that on the fly importing of single CJK glyph bdf definitions from the
freely downloadable GNU unifont bdf could in theory be done from within
PCB if a suitable menu option were available.

The entire set of batch converted 16x16 bitmapped CJK glyphs as an uncompressed text file weighs in at around 20MB, but compressed is only around 1.5MB

I hope
this is useful to anyone desperately in need of some functional CJK
glyphs before gEDA PCB supports either an integrated conversion process
like this or TTF support.

I cannot vouch for the
rendering of all of the glyphs, as I do not read Chinese, Japanese or Korean, I haven't had
the chance to review them all, and the heuristics may have joined the
occasional diagonally adjacent pixels which should remain unjoined.

The symbol archive is released under GPL2 or at your option, a later version, can be freely distributed, and the usual font exception applies.

I
would make the observation that this approach to glyph rendering makes
for quite a compact symbol definition. My initial efforts involving
conversion of curved paths over the glyphs produced symbol definitions 3-4 times the
overall size, with implications for final PCB file size. It would be
interesting to see how much bigger or smaller gerbers might end up being
if text is rendered as polygons derived from TTF fonts.

As a bonus, the same bdf glyph conversion tool pcbGlyphTool.c was able to generate a Hebrew font from the GNU unifont 16x16 pixel bdf file, and this is located at

About Me

Licensed radio amateur - That doesn't mean I wait for floods and tornadoes with a battery and a radio, it means I like to pull stuff apart, put stuff together, and hack stuff generally, while avoiding electric shock, thermal burns, RF burns, fire, lightning and falls from heights.