Next Previous Contents

3. 希腊语设置

所有欧洲任何操作系统的用户都有两个问题:第一个问题是显示语言的特殊字符(字母),第二个问题是通知计算机键盘的更改。实际上,情况更糟,因为应用程序不期望特殊字符,并且通常需要特殊的设置或环境变量。

为了显示字符,应用程序需要知道正在使用 737 或 928 字符集(=ISO-8859-7 或 Latin-7)。此外,还需要字体,以便希腊字符可以正确显示和打印。

对于希腊语的快速安装,请参阅相应的章节:Egkatastasi-Ellinikwn

3.1 希腊语字体

关于 Tex 的字体,请参阅 Links-gia-Tex

GRAFIS

GRAFIS 项目旨在收集网络上所有免费(PUBLIC DOMAIN)的 X-Windows 希腊语字体,按类型和/或特征对其进行分组,纠正它们可能存在的任何错误,创建新字体,最后,以公共域的形式将其交付给希腊社区。它已经成功实现了这一目标,请参阅 http://hq.hellug.gr/~graphis/

GRAFIS 包括所有先前发布的包含优秀希腊语字体的软件包

=====================================================================
 Shmeiwseis apo Aggelo Xaritsi [ah@computer.org]:
 * ta Type1 (k.a.) 928 fonts moy exoyn to A tonoymeno se 2 theseis wste na
   einai symbata me windows texts. Epishs exoyn kai ta symbola poy leipoyn.
 * to kbd support gia ellhnika sto rxvt (poy exw kanei contribute) exei
   yposthriksh gia anw teleia kai ellhnika omoiwmatika kathws epishs
   kai grammata me tono/dialytika. Ola ayta prepei na perasoyn
   se X11 xkb-style (ala grISOXKb).

* X11greek:
Den iksera oti den bgainei h payla! An typwseis to PS bgainei
kanonika. Ara mallon einai bug toy X Type1 rasteriser.
BTW, exw kanei ki ena aplo filtro (grpsfilter) poy epitrepei printing 
greek texts mesa apo Netscape. Des parakatw!
H lysh poy allazei ola ta ksena fonts se ellhnika den einai swsth.

To greekXfonts-full-1.1.tgz egine me skopo:
* na mazepsei ta pio kala greek fonts poy yphrxan sto diktyo
  Exei ta grtex/grtt kai polla alla: grfixed, couriergr, helveticagr.
  Akoma fonts kai se 737 encodings.
* na xrhsimopoihsei "swsta" (XLFD) kai omoiogenh font names
* na prosferei Type1 scalable fonts ypshlhs poiothtas (ta opoia
  prosferontai kai xwrista) - grinet
* na doyleyei trasnsparently me Netscape
=====================================================================

Truetype

最后,可以选择使用 Truetype 字体,使用 TrueType 字体引擎和转换器,特别适合那些拥有 Windows/Mac 字体集合的用户。请参阅 http://www.freetype.org/ 以及关于如何在 magaz 中设置 TrueType 字体的 http://magaz.hellug.gr/10/05_TTFlinux.html

有没有工具可以创建字体?

什么字体,位图 (例如 PCF/BDF) 还是可缩放字体 (例如 Type1, TTF)?

对于前者,有很多选择(xmbdfed 非常好,xfedor 不太好)。对于后者,没有什么实质性的东西(不幸的是)。不幸的是,Fontographer 和 Icarus 中的任何东西都处于非常早期的 alpha 阶段。唯一严肃的程序,并且在我看来是最好的程序是 METAFONT,但它需要阅读文档。

网络上有一个非常有趣的页面:http://members.iworld.net/bumchul/xfont.html 在此页面上,您会找到 - 除了关于如何将新字体放入您的机器的信息外 - 转换工具:例如 ttftobdf。此外,还有 bdftopcf。

另一个有趣的页面是:http://user.online.be/gd33771/download.html,其中包含各种 ttf 字体(例如,为了能够用 xterm 写哥特体)。

3.2 控制台(文本模式)

最新的发行版应该已经集成了希腊语。运行

#setfont iso07.f16
#loadkeys gr
如果您没有看到错误消息,那么您已经在控制台中启用了希腊语,可以通过左 ALT-SHIFT 键切换。

注意:在 SHELL (bash, tcsh) 中,默认情况下没有希腊语。请尝试在编辑器中,例如 JOE, VI。

Greek-console

在控制台中,您可以使用 Giorgos Keramidas 的 greek-console。它同时支持 737 和 928,并且可以通过 rpm 轻松安装。希腊语通过 "chcp 737" 和 "chcp 928" 显示,并通过(左)ALT-SHIFT 键(取消)激活。此外,右 ALT 键可以瞬间切换键盘。

内核 2.2 和希腊语

新的 2.2.x (以及 2.3.x) 内核系列,在文本模式下有一个新的屏幕管理代码(现在使用 framebuffer),因此在控制台中支持希腊语存在问题(图形环境没有问题)。 Sotiris Tsimponis 找到了解决方案,将以下内容添加到 /etc/profile 中

[ -t 1 ] && printf "\033(K"
这会在用户进行交互式登录时激活希腊语。

控制台的其他程序

Alexios Chouchoulas 也编写了 greek-2.0.tar.gz,而 Antonis Kavarnos (akav@hellug.gr) 编写了 grpty,它也可以在 solaris 上运行。

3.3 图形环境 (Xwindows)

在 Linux 的 XWindows 下书写希腊语的选项有(除了自己创建,例如使用 HRI 中提到的 xmodmap):GRkbd(更通用的解决方案),grISOXKb(如果前者失败)和 kikbd(用于 KDE)。

GRkbd

这个由 Giannis Tsakiris 提供的软件包本质上是一个标志,可以在两种语言之间切换,就像许多人从 windows-3.x 中记得的那样。这是在您的 Linux 上启用希腊语的最简单解决方案,您可以在 metalab 中找到源代码,名称为 greek12.tgz,并在 Argea 中找到二进制文件。您下载的 tgz 文件包含一个 README 文件和一个可执行文件,您将其放在 /usr/local/bin 目录中。当您执行它时,屏幕上会出现一个标志,每次单击或按下左 ALT-SHIFT 键时,该标志会在希腊语和英语之间来回切换。请阅读 README 文件。

KiKbd

KiKbd 由 Alexander Budnik 和 Dimitrios Bouras 开发,是一种在 KDE 中启用希腊语的优雅方式(已包含在 KDE 中)。它在 KDE=1.1.1 和 Qt=1.42 上运行良好(但不适用于 1.44)。

xgrk

此外,我们还知道存在这个用于希腊语的软件包:http://www.softlab.ece.ntua.gr/~sivann/xgrk/,由 Spyros Ioannou 开发,适用于多种 UNIX 操作系统。

grISOXKb

grISOXKb 的第一个版本 (1997) 是 Dimitrios Bouras 和 Lefteris Tsivtzelis 合作的成果。 grISOXKb 软件包是旧版本 GRKbd(不是 Tsakiris 的那个 - 只是同名...)和 grXiso 的超集。此版本有很多 "好东西"。其中两个最重要的特点是

更多信息请参阅软件包的 README 文件和 docs/INSTALLATION.* 文件:ftp://argeas.hellug.gr/pub/unix/linux/GREEK/grISOXKb-1.2.tar.gz

=====================================================================
Apo [ah@computer.org]
Ta tonoymena (; + letter) de moy bgainoyn se shells (ok se xedit).
Den exw akomh brei giati.
To package einai ontws poly kalh prospatheia. Einai akoma ateles.
Leipoyn: tonoymena+dialytika, anw teleia, ellhnika omoiwmatika
(BTW, ola yposthrizontai sto rxvt compiled me greek support).
Epishs: ypothetei oti to keyboard einai ellhniko. Yparxoyn polla kbds
(opws ta UK, IT klp) poy exoyn polla symbols se theseis diaforetikes
apo to ellhniko (eg. @, ", \ klp). Exw hdh kanei patch sto grISOXKb
gia to UK keyboard kai kalo einai na mporei kaneis me COUNTRY-X 
keyboard na mporei na kanei type ellhnika xwris na allazoyn oi theseis
allwn symbols.

Mazi me fix twn parapanw to XKB X11 greek support tha einai sxedon teleio.
Ksereis an kai poy exei documentation gia XKB kai compose files.
Kapoios prepei na to teleiwsei. Doyleyei kaneis twra se ayto ?
=====================================================================

3.4 时区

希腊位于东欧时区 (Eastern European Timezone, EET),在冬季相当于格林威治时间加 2 小时 (GMT+2)。夏季,当夏令时生效时,正确的时差是 +0300 (EET DST),其中 DST 代表夏令时。为了自动进行转换,最好选择 Europe/Athens。 1996 年,从夏令时到冬令时的日期发生了变化(从 9 月改为 10 月)。 1996 年之后的新 Linux 发行版已经考虑到了这一点,而较旧的版本则需要更正。 请参阅以下关于此主题的子章节。

tzHellas

Dimitris Bouras:我现在想宣布一个迷你软件包,它为希腊时区提供了一个更正的文件,该文件是在去年和今年 (1996 年) 宣布的 “夏令时” 日期更改之后提供的。 与此同时,还有一个小程序,可以读取此类文件,并以人类可读的形式打印它们包含的信息(我们如何说 “human-readable form” - 英语术语的翻译来来回回,所以有些人会感到兴奋 :) :))。

这个小包(仅 4365 字节)您(很快)可以在以下位置找到

ftp://argeas.hellug.gr/pub/unix/linux/GREEK/tzHellas-271097.tar.gz

下载它并阅读 README 以获取更多信息。 底线:它包含的时区文件 “Hellas” 提供了希腊正确的夏令时日期(根据最新的官方公告),直到 2001 年 10 月,或者直到他们再次更改日期... :)。

EET.zic

=====================================================================
An 8elei na orisei kaneis timezone environment variable, ayth einai h 
svsth:
        setenv TZ 'EET-2EET DST-3,M3.5.0/3:00:00,M10.5.0/3:00:00'
vraio e? :-)

Pio kala bebaia einai na xrhsimopoioyme to svsto zoneinfo arxeio.
Oi teleytaies ekdoseis toy linux exoyn svsta orismeno 
to EET (allakse to 1996).
Oi palaioteres allazoyn thn vra to Septembrio, anti toy Oktvbrioy.
Etsi ftiaxnoyme to parakatv arxeio EET.zic:

----- CUT: EET.zic -----
Rule    E-Eur   1986    max     -       Mar     lastSun 3:00s   1:00    " DST"
Rule    E-Eur   1986    1995    -       Sep     lastSun 3:00s   0       -
Rule    E-Eur   1996    max     -       Oct     lastSun 3:00s   0       -
Zone    EET             2:00    E-Eur           EET%s
----- CUT: END OF EET.zic -----

Meta:
        zic EET.zic
(ayto ftiaxnei to /usr/lib/zoneinfo/EET)
        /bin/rm -f /var/lib/zoneinfo/localtime
        ln -s /usr/lib/zoneinfo/localtime /var/lib/zoneinfo/EET
=====================================================================

3.5 打印

在本章中,我们将描述如何设置您的系统,以便您可以打印希腊语。 如果您不熟悉与 lpd 和 lpr 相关的基本知识,最好查阅 Printing-HOWTO,它提供了非常有价值的信息。

在支持希腊语的文本打印机上打印纯文本。

如果您的打印机可以打印纯文本并支持希腊语,则几乎无需执行任何操作。 只需使用 lpr 命令将文本发送进行打印即可。 仅注意字符集问题:请参阅章节 greekcharsets。 如果您的打印机支持的字符编码与文本编写的字符编码不同,您将需要转换它,请参阅 convertgreek

在不支持希腊语的打印机上打印纯文本。

如果您的打印机不支持希腊语,您将需要通过 a2ps(请参阅 a2ps)将纯文本转换为 PostScript,并通过 Ghostscript 打印它。 如果您遇到问题,请查找 a2psgr。

打印希腊语 PostScript 文本。

即使您没有支持 PostScript 的打印机,Linux 也允许您通过 Ghostscript 打印此类文本。 ghostcript 是一个将 PostScript 文件转换为其他设备(各种类型的打印机、X Windows、传真等)可以理解的格式的程序。 从现在开始,“通过 ghostscript 打印” 将意味着将 PostScript 文件转换为您的打印机格式,然后使用 lpr file 形式的某个命令进行打印。

从 ghostview 打印希腊语需要什么

测试它是否正常工作,例如使用命令:{???}

gs -sDEVICE=deskjet -dNOPAUSE -sOutpoutFile=/dev/lp1 tiger.ps

修改 Fontmap

Fontmap 是一个文件,它告诉 ghostscript 在哪里可以找到每个字体文件。 在我的系统中,它位于

/usr/share/ghostscript/3.33/Fontmap
。 如果您不知道它安装在您自己的系统中的哪个位置,请给出
find / -name "Fontmap"
以找到它。

Fontmap 由以下形式的记录组成

/Charter-Roman                  (bchr.pfa)      ;
例如,此行表示 Courier-Roman 字体位于 bchr.pfa 文件中。

我们唯一需要做的就是添加希腊语字体。 您为字体指定的名称可以是任何名称(例如 PanosArialBold),但最好是有逻辑的名称(例如,PanosArialBold 不应对应于 courier italic 字体!!!)。 如果字体附带描述它们的文件(例如 fonts.scale),最好使用与那里给出的名称对应的名称。 您仍然可以给出

strings filename.pfb | more
并查找以下形式的行
/FontName /GreekArialBold def
注意! 当文件名不包含目录时,假定它们位于 ghostscript 存储类似文件的目录中。 如果您的字体位于其他位置,请放置完整的文件名。 例如,

/GreekArialPlain (/usr/X11/lib/X11/fonts/Type1GR/grkarip.pfb) ;

如果您从不同的应用程序(例如 Netscape)发送文件进行打印,则很可能它们会使用一些默认字体。 例如,Netscape 将发送任何文件,无论它用什么语言编写,都将使用 Times 和 Courier 字体打印。 这将导致希腊文本以不可理解的形式打印(委婉地说)。 解决方案是在 Fontmap 的末尾添加记录,以将这些字体替换为希腊语字体。 例如,我的 Fontmap 的最后几行是

/Times-Roman                    /GreekTimesPlain ;
/Times-Italic                   /GreekTimesItalic ;
/Times-Bold                     /GreekTimesBold ;
/Times-BoldItalic               /GreekBoldItalic ;
/Courier                        /GreekCourierPlain      ;
/Courier-Italic                 /GreekCourierItalic ;
/Courier-Bold                   /GreekCourierBold ;
/Courier-BoldItalic             /GreekCourierBoldItalic ;
这个解决方案不是理想的,但至少有效。

Fontmap,其他解决方案

'Aggelos Charitsis 向我发送了他自己关于 Fontmap 问题的设置,以及一个小程序 grpsfilter(见下文),您可以使用它来克服 netscape 的问题,而无需修改 fontmap。

Ta Fontmap aliases poy proteinw (kanei use ta Type1 fonts moy):
Pros to telos toy Fontmap:
===================cut==here=======================================
% ------------------------------------------------------
% Elot greek fonts by Angelo Haritsis <ah@computer.org>
% ------------------------------------------------------
/GreekArialPlain                (grkarip.pfb)   ;
/GreekArialBold                 (grkarib.pfb)   ;
/GreekArialItalic               (grkarii.pfb)   ;
/GreekArialBoldItalic           (grkaribi.pfb)  ;
/Greek-Arial-Plain              /GreekArialPlain ;
/Greek-Arial-Bold               /GreekArialBold ;
/Greek-Arial-Italic             /GreekArialItalic ;
/Greek-Arial-Bold-Italic        /GreekArialBoldItalic ;
/Greek-Arial-BoldItalic         /GreekArialBoldItalic ;

/GreekTimesPlain                (grktimp.pfb)   ;
/GreekTimesBold                 (grktimb.pfb)   ;
/GreekTimesItalic               (grktimi.pfb)   ;
/GreekTimesBoldItalic           (grktimbi.pfb)  ;
/Greek-Times-Plain              /GreekTimesPlain ;
/Greek-Times-Roman              /GreekTimesPlain ;
/Greek-Times-Bold               /GreekTimesBold ;
/Greek-Times-Italic             /GreekTimesItalic ;
/Greek-Times-Bold-Italic        /GreekTimesBoldItalic ;
/Greek-Times-BoldItalic         /GreekTimesBoldItalic ;

/GreekCourierPlain              (grkcurp.pfb)   ;
/GreekCourierBold               (grkcurb.pfb)   ;
/GreekCourierItalic             (grkcuri.pfb)   ;
/GreekCourierBoldItalic         (grkcurbi.pfb)  ;
/GreekCourier                   /GreekCourierPlain ;
/Greek-Courier                  /GreekCourierPlain ;
/Greek-Courier-Plain            /GreekCourierPlain ;
/Greek-Courier-Bold             /GreekCourierBold ;
/Greek-Courier-Italic           /GreekCourierItalic ;
/Greek-Courier-Bold-Italic      /GreekCourierBoldItalic ;
/Greek-Courier-BoldItalic       /GreekCourierBoldItalic ;

% Polytoniko Greek fonts
/GreekPolyTimesPlain            (grkpolp.pfb)   ;
/GreekPolyTimesItalic           (grkpoli.pfb)   ;
/Greek-Poly-Times-Plain         /GreekPolyTimesPlain ;
/Greek-Poly-Times-Italic        /GreekPolyTimesItalic ;
===================cut==here=======================================

grpsfilter

Na kai to aplo filtro grpsfilter:
-----------------------------grpsfilter-----------------------
#!/bin/sh
# Filter to print greek from Netscape (may be used in printcap)
# (c) 1997 Angelo Haritsis <ah@computer.org>
# NB: You need my postscript greek fonts and proper Fontmap!
#
exec sed -e 's/\/Times\(.* findfont\)/\/Greek-Times\1/g' \
    -e 's/\Courier\(.* findfont\)/\Greek-Courier\1/g' \
    -e 's/\/Times-Oblique\(.* findfont\)/Greek-Times-Italic\1/g' \
    -e 's/\/Times-BoldOblique\(.* findfont\)/Greek-Times-BoldItalic\1/g'
-----------------------------grpsfilter-----------------------

An ftiakseis enan printer `grps' sto printcap poy pernaei ola ta
Postscript mesa apo to grpsfilter, tote exeis ellhnikh ektypwsh
xwris na "xalaseis" to FontMap.

Profanws to filter doyleyei kai sto cmd line. Apo Netscape print to
a file: test.ps kai meta:
  grpsfilter <test.ps | ghostview -  

3.6 如何挂载 Windows 分区?

此操作的先决条件是您已编译了带有 NLS、737 和 iso-8859-7 的内核。 如果您希望在每次系统启动时自动激活 Windows 文件的希腊语名称,则必须在 fstab 文件中,将挂载 vfat 分区的行中的单词 default 替换为设置 iocharset=iso8859-7。 在 /etc/fstab 中为带有希腊语文件名的 Windows 分区设置参数,例如

/dev/hda1       /Win95  vfat    rw,user,codepage=737,iocharset=iso8859-7        0       0
或者直接在 mount 命令中传递参数,例如
mount -tvfat -onoexec,iocharset=iso8859-7 /dev/hda1 /Win95

3.7 如何在 Linux 中刻录 CD?

使用 xcdroast,但要注意您选择的格式。 传统的 ISO9660 标准无法包含 UNIX 文件系统的所有特性,例如 Linux 的 ext2。 相反,UNIX 有 Rockridge,它支持深层目录、大小写字母、带有特殊字符的名称(对于 CD 而言,希腊语就是这样的字符)、符号链接、文件权限等。 用于 windows 的 Romeo/Joliet 不如 Rockridge 好(例如,它不能正确写入以点开头的名称),因此在必要时使用 “Rockridge+Joliet” 技巧,它可以在许多操作系统上完美地读取 CD。

如果您想知道为什么您在 CD 中找到的 Linux 安装无法工作,则很可能的原因是它不是 Rockridge。


Next Previous Contents