Issues (and suggested fixes)
Type-1 fonts need an additional mapping from U+021A/B to U+162/3
Most PS1 fonts (not OpenType) that ship with Fedora lack the Unicode U+21A/B (t with comma below) which is the proper code point for Romanian t with comma below. Thankfully, Adobe once decided that t with cedilla is not used in any language so the proper glyphs are usually present at U+162/3, which used to be the unified code point for t cedilla and t comma below before Unicode 3.0. Microsoft's Uniscribe renderer automatically handles this issue by remapping U+21A/B to U+162/3 when the former glyphs are missing. Unfortunately, Pango/fonconfig doesn't do this, so most new Romanian documents can only be displayed with a very narrow font selection.
Proposed solution: adopt Uniscribe solution; editing the PS1 fonts is pointless and would violate the license for the commercial ones. With an external mapping all PS1 fonts would instantly become usable.
Missing OpenType localized forms GSUB/latn/ROM/{locl,ccmp}
The Adobe/Linotype/Vista industry standard seems to that activating ROM/locl should map "s with cedilla" to "s with comma". Since in Adobe (Pro) OT fonts U+162/3 is by default mapped to "t with comma", activating this optional mapping for s renders old, pre-Unicode 3.0 Romanian texts with comma below both s and t. Thankfully Pango already handles this!
The OT SIL fonts take a slightly different approach, but work with Pango nonetheless. First, they have proper cedilla variants for both s and t. Second, they don't have a ROM/locl feature, but a ROM/ccmp feature which remaps both cedilla variants to comma-below counterparts. I'm not sure this approach is entirely correct because the OpenType spec on ccmp says that ccmp should not be language sensitive. YMMV, I'm no expert on this.
So, what's the trouble?
- Practically no free fonts have a
ROM/locl
feature, while most newer commercical fonts do. This should be a two line fix in fontforge. Those form SIL use theROM/ccmp
mechanism that fortunately works.
- Pango does not allow an application to set the OT features language independently from UI language; not for Romanian anyway. Currently, the only way to run, say,
gedit
withROM/locl
enabled but the default English UI is:LANG=ro_RO.UTF-8 LC_MESSAGES=C gedit
. See Pango bug #442786.
OpenOffice.org doesn't use locl
for Romanian
OpenOffice.org doesn't use Pango but it's own ICU renderer. It looks like a CTL (Complex Text Layout) module has to be written in order to enable use of OpenType font features for a specific script. It's not clear if the CTL can be per language, but a Latin CTL could detect Romanian.
Also, OpenOffice.org doesn't make good use of the URW Type-1 fonts. Screenshot.
Console Fonts
The default Linux console fonts also lack the U+219-B range, but few care about the console fonts these days...
Font status matrix
For the sake of keeping the table compact, the table entries are abbreviated: y=yes, n=no, s=soon, a=approximating glyph (see the discussion above for the Adobe standard). You can click on the font name to be taken further down the page for details (if available). Fonts not listed here have very poor support, i.e. most glyphs are missing and usually they do not target Latin scripts. If you think a font should be listed please let me know.
Font name | type | ă | î | â | ș | ț | ş | ţ | „” | «» | € | locl |
Package | Notes |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DejaVu | TTF | y | y | y | y | y | y | y | y | y | y | y | dejavu-fonts | locl OK in 2.26 except ExtraLight
|
Liberation | TTF | y | y | y | y | y | y | y | y | y | y | n | liberation-fonts | Ș & Ț OK in 1.04 (F9 updates) |
Latin Modern | CFF | y | y | y | y | y | y | y | y | y | y | y | texlive-texmf-fonts | not in F9 fontconfig database |
TeX Gyre | CFF | y | y | y | y | y | y | y | y | y | y | y | texlive-texmf-fonts | idem, and some legal trouble |
Linux Libertine | TTF | y | y | y | y | y | y | y | y | y | y | s | linux-libertine-fonts | Small caps Ș & Ț fixed in 3.0 |
Charis SIL | TTF | y | y | y | y | y | y | y | y | y | y | y | charis-fonts | Uses ccmp for locl
|
Doulos SIL | TTF | y | y | y | y | y | y | y | y | y | y | y | doulos-fonts | Uses ccmp for locl
|
Gentium SIL | TTF | y | y | y | y | y | y | y | y | y | y | n | gentium-fonts | - |
Antykwa Torunska | CFF | y | y | y | y | n | y | a | y | y | y | y | texlive-texmf-fonts | not in F9 fontconfig database |
STIX | TTF | y | y | y | n | n | y | y | y | y | y | n | stix-fonts | - |
MathML | TTF | n | n | n | n | n | n | n | n | n | n | n | mathml-fonts | - |
URW PostScript™ | PS1 | y | y | y | y | n | y | a | y | y | y | - | urw-fonts | freetype bug #23940 |
Terminus | RAS | y | y | y | y | y | y | y | y | y | y | - | terminus-font-* | For console and X11 |
X.Org raster | RAS | y | y | y | y | y | y | y | y | y | y | - | xorg-x11-fonts-* | Except Charter and Courier 10 |
Key for font type:
- TTF = old TrueType or TrueType flavored OpenType [which is backwards compabile with TrueType] in a .ttf or .ttc file (.ttc is a collection of more than one font, e.g. Cambria and Cambria Math in Vista)
- CFF = CFF (Postscript Type 2) in OpenType .otf file
- PS1 = Postscript Type 1 in .afm/.pfb file pairs.
- RAS = Some raster format, e.g. PCF.
Font status details:
DejaVu
The 2.26 version of the fonts are not yet packaged for Fedora. The discussion on the locl
bug #455981 may be of interest to other font designers.
Liberation
The comma below glyphs were added in version 1.04 of the fonts, which are included in F9 updates as of July 27. Older versions lacked both comma-below code points, and followed the Adobe convention, having a t with comma at U+162/3. In 1.04 a proper "t cedilla" is provided.
TeX Gyre
These are OpenType CFF conversions of the URW PostScript fonts. Only Bonum, Pagella, Schola and Termes are installed in Fedora 9.
Linux Libertine
- The (higher quality) CFF version of the fonts are not packaged. Bug #455995.
- Small caps versions are missing for S and T with comma below. Bug #2022566. Fixed upstream in version 3.0.
- Feature request #2022572 for locl. A patch is available on that page. A patched version of the CFF regular font is here.
X.Org raster fonts
The raster fonts that support iso10646 (Unicode) encoding are all OK for Romanian, except Bitstream Charter and Bitstream Courier 10 Pitch, which lack all accented glyps for Romanian. The matching Type-1 fonts form X.Org, Bitstream Charter and Courier 10 are broken in the same way. Here is the complete list of usable fonts for Romanian:
- clean
- clearlyu
- courier (not 10 pitch!)
- fixed
- helvetica
- lucida
- lucidabright
- lucidatypewriter
- new century scoolbook
- times
- utopia
MathML
These are conversions of Computer Modern fonts (from TeX in OT-1 encoding) poorly pretending to have a Unicode TTF map. Hopefully they'll get replaced by the Unicode CM font effort.