[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Groff] Polytonic Greek
From: |
Werner LEMBERG |
Subject: |
Re: [Groff] Polytonic Greek |
Date: |
Tue, 18 Jan 2005 14:19:30 +0100 (CET) |
> After 1.19’s composite glyphs, polytonic Greek is broken;
Interesting. groff, as I distribute it, doesn't have any support for
polytonic Greek. It seems that you have a specialized version of the
devutf8 font files. What distribution are you using?
> what previously would quite rightly render as:
>
> echo '\[u03AF]' | groff -Tutf8
> ί
>
> now produces:
>
> echo '\[u03AF]' | groff -Tutf8
> warning: can’t find special character ‘u03B9_0301’
>
> Would it be trivial to recreate 1.18’s behaviour under
> 1.19, is this a matter for bug-groff (or neither)?
From groff.texinfo:
* A glyph [in a groff font file] representing more than a single
input character will be named
`u' COMPONENT1 `_' COMPONENT2 `_' COMPONENT3 ...
Example: `u0045_0302_0301'.
For simplicity, all Unicode characters which are composites must
be decomposed maximally (this is normalization form D in the
Unicode standard); for example, `u00CA_0301' is not a valid glyph
name since U+00CA (LATIN CAPITAL LETTER E WITH CIRCUMFLEX) can be
further decomposed into U+0045 (LATIN CAPITAL LETTER E) and
U+0302 (COMBINING CIRCUMFLEX ACCENT). `u0045_0302_0301' is thus
the glyph name for U+1EBE, LATIN CAPITAL LETTER E WITH CIRCUMFLEX
AND ACUTE.
* groff maintains a table to decompose all algorithmically derived
glyph names which are composites itself. For example, `u0100'
(LATIN LETTER A WITH MACRON) will be automatically decomposed
into `u0041_0304'. Additionally, a glyph name of the GGL is
preferred to an algorithmically derived glyph name; groff also
automatically does the mapping. Example: The glyph `u0045_0302'
will be mapped to `^E'.
* glyph names of the GGL can't be used in composite glyph names;
for example, `^E_u0301' is invalid.
With other words, a line
u038F 24 0 0x038F
in devutf8/R and friends must be changed to
u03B9_0301 24 0 0x038F
Then everything should work as before.
Werner