import terminus-font-4.48
This commit is contained in:
commit
cee3932f8c
12
75-yes-terminus.conf
Normal file
12
75-yes-terminus.conf
Normal file
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
||||
<fontconfig>
|
||||
<!-- Accept terminus font -->
|
||||
<selectfont>
|
||||
<acceptfont>
|
||||
<pattern>
|
||||
<patelt name="family"><string>Terminus</string></patelt>
|
||||
</pattern>
|
||||
</acceptfont>
|
||||
</selectfont>
|
||||
</fontconfig>
|
104
CHANGES
Normal file
104
CHANGES
Normal file
@ -0,0 +1,104 @@
|
||||
Version 4.48:
|
||||
|
||||
* Added the basic 27 hebrew letters and sheqel, with uppercase height.
|
||||
* Some improvements in the font build scripts.
|
||||
|
||||
Version 4.47:
|
||||
|
||||
* Added 35 new characters (33 glyphs).
|
||||
* Replaced ao2-variant "ae" with ao1 "ae", it was too similar to "oe".
|
||||
* Some fixes and improvements (17 characters in various sizes/styles).
|
||||
* Significantly improved the font conversion tools. Python 3.5.0 or
|
||||
Node 6.9.0 are now required to build the font.
|
||||
|
||||
Version 4.46:
|
||||
|
||||
* The X11 8-bit code pages are not installed by default.
|
||||
* Added IBM-437 8-bit code page for X11.
|
||||
* The CRT VGA weight for Linux console is not installed by default.
|
||||
* Removed the Linux console mapping files.
|
||||
They should be provided by the console packages.
|
||||
* Removed the BSD console installation.
|
||||
The recent BSD-s have a new console subsystem.
|
||||
* Added 50 new characters. Mostly math, but also Buglarian yat and yus.
|
||||
* Rewritten the font conversion tools in python and javascript.
|
||||
The full unicode range (17x64K) is now supported.
|
||||
* The Windows installer can be built from sources.
|
||||
* Small fixes and improvements (7 characters in various sizes).
|
||||
* Renamed (un)install-ref to (un)install-psf-ref.
|
||||
|
||||
Version 4.40:
|
||||
|
||||
* Added 6 combining accents as separate characters.
|
||||
* Added 14 letters with dot above / dot below.
|
||||
* Added partial subscript and superscript: all digits and 11 letters.
|
||||
* Added 30+ math characters, notably large braces, brackets and parens.
|
||||
* Added unicode range 2800-28FF in two variants (br1 and br2).
|
||||
* A few small character fixes.
|
||||
* Altered configure to be a bit more POSIX compliant.
|
||||
* Replaced some obscure (un)install Makefile targets with variables.
|
||||
|
||||
Version 4.39:
|
||||
|
||||
* Added ballot, checkmark, heavy ballot and heavy checkmark.
|
||||
* Changed HT, LF etc. in sizes 14 and 18-hi2 to be proportional to the
|
||||
letter height, not the matrix height.
|
||||
* Added the powerline characters E0A0..E0A2 and E0B0..E0B3.
|
||||
* Added diameter (2300) - same gluph as empty set (2205).
|
||||
* Small improvements in size 32.
|
||||
|
||||
Version 4.38:
|
||||
|
||||
* Added 23 pseudographic characters, most notably rounded frames.
|
||||
* Added new td1 variant with centered ascii tidle.
|
||||
* Fixed Y acute in sizes 22 and 28, internal optimizations (invisible).
|
||||
|
||||
Version 4.36:
|
||||
|
||||
* Removed the rarely used cm2 variant.
|
||||
* Added new ll2 variant with more distinctive l.
|
||||
* Added quotereversed (201B), quotedblreversed (201F), I/i/U/u dotbelow
|
||||
(1ECA, 1ECB, 1EE4, 1EE5).
|
||||
* Moved all quotes and alike in size 32 one line down.
|
||||
* Small fixes and improvements (t commaaccent, quotes alignment etc. in
|
||||
some sizes).
|
||||
* Windows installation: creates the relevant registry key.
|
||||
|
||||
Version 4.35:
|
||||
|
||||
* Added hi2 variant for size 18.
|
||||
* Fixes in size 18: normal V, normal W, bold X, H stroke, some
|
||||
pseudographic characters and the *NIX installation.
|
||||
|
||||
Version 4.34:
|
||||
|
||||
* Added size 10x18.
|
||||
* Small fixes and improvements in section, multiply, Eng/eng, Dje,
|
||||
dje, house, male, zeta and various characters in the different sizes.
|
||||
* The default cyrillic ghe is now ge1, with ge2 available as an option.
|
||||
|
||||
Version 4.32:
|
||||
|
||||
* Slightly more distintive normal M and W.
|
||||
* Rounded 28-bold, 32-normal, 32-bold.
|
||||
Also removed the 32-normal kx2 style.
|
||||
* Small changes: Che/che stroke, phi, Zhe/zhe etc.
|
||||
* Linux console: the default bold is now framebuffer.
|
||||
* Smaller Makefile, GNU make required.
|
||||
* Changed the font license to SIL OFL 1.1.
|
||||
It's FSF approved, no need to worry.
|
||||
* And, as you can see, Terminus Font is now on sourceforge.
|
||||
|
||||
Version 4.30:
|
||||
|
||||
* Added size 22 (not very good).
|
||||
* Added another 25 characters.
|
||||
* Various small fixes and improvements.
|
||||
* Changed the default prefix and x11dir.
|
||||
|
||||
Version 4.28:
|
||||
|
||||
* Heavy frames (written mostly by Tim Allen) and a few more letters.
|
||||
* Altered trianges and arrows, small bugfixes.
|
||||
* Reorganized the 512-character console font to include more letters
|
||||
instead of the IBM-437 specific pseudographics.
|
296
Makefile
Normal file
296
Makefile
Normal file
@ -0,0 +1,296 @@
|
||||
INT = python3
|
||||
EXT = py
|
||||
BIN = ./bin
|
||||
|
||||
UCS2ANY = $(INT) $(BIN)/ucstoany.$(EXT)
|
||||
BDF2PSF = $(INT) $(BIN)/bdftopsf.$(EXT)
|
||||
UCS2X11 = $(INT) $(BIN)/ucstoany.$(EXT) -f
|
||||
BDF2PCF = bdftopcf
|
||||
|
||||
REG_8859_1 = ISO8859 1
|
||||
REG_8859_2 = ISO8859 2
|
||||
REG_8859_5 = ISO8859 5
|
||||
REG_8859_7 = ISO8859 7
|
||||
REG_8859_9 = ISO8859 9
|
||||
REG_MS_1251 = Microsoft CP1251
|
||||
REG_8859_13 = ISO8859 13
|
||||
REG_8859_15 = ISO8859 15
|
||||
REG_8859_16 = ISO8859 16
|
||||
REG_MS_1255 = Microsoft CP1255
|
||||
REG_IBM_437 = IBM CP437
|
||||
REG_KOI8_R = KOI8 R
|
||||
REG_KOI8_U = KOI8 U
|
||||
REG_BG_MIK = Bulgarian MIK
|
||||
REG_PT_154 = Paratype PT154
|
||||
REG_XOS4_2 = XOS4 2
|
||||
REG_10646_1 = ISO10646 1
|
||||
|
||||
PSF_8859_1 = ter-112n.psf ter-114n.psf ter-114b.psf ter-116n.psf ter-116b.psf ter-118n.psf ter-118b.psf ter-120n.psf ter-120b.psf ter-122n.psf ter-122b.psf ter-124n.psf ter-124b.psf ter-128n.psf ter-128b.psf ter-132n.psf ter-132b.psf
|
||||
PSF_8859_2 = ter-212n.psf ter-214n.psf ter-214b.psf ter-216n.psf ter-216b.psf ter-218n.psf ter-218b.psf ter-220n.psf ter-220b.psf ter-222n.psf ter-222b.psf ter-224n.psf ter-224b.psf ter-228n.psf ter-228b.psf ter-232n.psf ter-232b.psf
|
||||
PSF_8859_7 = ter-712n.psf ter-714n.psf ter-714b.psf ter-716n.psf ter-716b.psf ter-718n.psf ter-718b.psf ter-720n.psf ter-720b.psf ter-722n.psf ter-722b.psf ter-724n.psf ter-724b.psf ter-728n.psf ter-728b.psf ter-732n.psf ter-732b.psf
|
||||
PSF_8859_9 = ter-912n.psf ter-914n.psf ter-914b.psf ter-916n.psf ter-916b.psf ter-918n.psf ter-918b.psf ter-920n.psf ter-920b.psf ter-922n.psf ter-922b.psf ter-924n.psf ter-924b.psf ter-928n.psf ter-928b.psf ter-932n.psf ter-932b.psf
|
||||
PSF_MS_1251 = ter-c12n.psf ter-c14n.psf ter-c14b.psf ter-c16n.psf ter-c16b.psf ter-c18n.psf ter-c18b.psf ter-c20n.psf ter-c20b.psf ter-c22n.psf ter-c22b.psf ter-c24n.psf ter-c24b.psf ter-c28n.psf ter-c28b.psf ter-c32n.psf ter-c32b.psf
|
||||
PSF_8859_13 = ter-d12n.psf ter-d14n.psf ter-d14b.psf ter-d16n.psf ter-d16b.psf ter-d18n.psf ter-d18b.psf ter-d20n.psf ter-d20b.psf ter-d22n.psf ter-d22b.psf ter-d24n.psf ter-d24b.psf ter-d28n.psf ter-d28b.psf ter-d32n.psf ter-d32b.psf
|
||||
PSF_8859_16 = ter-g12n.psf ter-g14n.psf ter-g14b.psf ter-g16n.psf ter-g16b.psf ter-g18n.psf ter-g18b.psf ter-g20n.psf ter-g20b.psf ter-g22n.psf ter-g22b.psf ter-g24n.psf ter-g24b.psf ter-g28n.psf ter-g28b.psf ter-g32n.psf ter-g32b.psf
|
||||
PSF_MS_1255 = ter-h12n.psf ter-h14n.psf ter-h14b.psf ter-h16n.psf ter-h16b.psf ter-h18n.psf ter-h18b.psf ter-h20n.psf ter-h20b.psf ter-h22n.psf ter-h22b.psf ter-h24n.psf ter-h24b.psf ter-h28n.psf ter-h28b.psf ter-h32n.psf ter-h32b.psf
|
||||
PSF_IBM_437 = ter-i12n.psf ter-i14n.psf ter-i14b.psf ter-i16n.psf ter-i16b.psf ter-i18n.psf ter-i18b.psf ter-i20n.psf ter-i20b.psf ter-i22n.psf ter-i22b.psf ter-i24n.psf ter-i24b.psf ter-i28n.psf ter-i28b.psf ter-i32n.psf ter-i32b.psf
|
||||
PSF_KOI8_RV = ter-k14n.psf ter-k14b.psf ter-k16n.psf ter-k16b.psf
|
||||
PSF_KOI8_R = ter-k12n.psf ter-k18n.psf ter-k18b.psf ter-k20n.psf ter-k20b.psf ter-k22n.psf ter-k22b.psf ter-k24n.psf ter-k24b.psf ter-k28n.psf ter-k28b.psf ter-k32n.psf ter-k32b.psf
|
||||
PSF_BG_MIK = ter-m12n.psf ter-m14n.psf ter-m14b.psf ter-m16n.psf ter-m16b.psf ter-m18n.psf ter-m18b.psf ter-m20n.psf ter-m20b.psf ter-m22n.psf ter-m22b.psf ter-m24n.psf ter-m24b.psf ter-m28n.psf ter-m28b.psf ter-m32n.psf ter-m32b.psf
|
||||
PSF_PT_154 = ter-p12n.psf ter-p14n.psf ter-p14b.psf ter-p16n.psf ter-p16b.psf ter-p18n.psf ter-p18b.psf ter-p20n.psf ter-p20b.psf ter-p22n.psf ter-p22b.psf ter-p24n.psf ter-p24b.psf ter-p28n.psf ter-p28b.psf ter-p32n.psf ter-p32b.psf
|
||||
PSF_KOI8_UV = ter-u14n.psf ter-u14b.psf ter-u16n.psf ter-u16b.psf
|
||||
PSF_KOI8_U = ter-u12n.psf ter-u18n.psf ter-u18b.psf ter-u20n.psf ter-u20b.psf ter-u22n.psf ter-u22b.psf ter-u24n.psf ter-u24b.psf ter-u28n.psf ter-u28b.psf ter-u32n.psf ter-u32b.psf
|
||||
PSF_XOS4_2 = ter-v12n.psf ter-v14n.psf ter-v14b.psf ter-v16n.psf ter-v16b.psf ter-v18n.psf ter-v18b.psf ter-v20n.psf ter-v20b.psf ter-v22n.psf ter-v22b.psf ter-v24n.psf ter-v24b.psf ter-v28n.psf ter-v28b.psf ter-v32n.psf ter-v32b.psf
|
||||
PSF = $(PSF_8859_1) $(PSF_8859_2) $(PSF_8859_7) $(PSF_8859_9) $(PSF_MS_1251) $(PSF_8859_13) $(PSF_8859_16) $(PSF_MS_1255) $(PSF_IBM_437) $(PSF_KOI8_RV) $(PSF_KOI8_R) $(PSF_BG_MIK) $(PSF_PT_154) $(PSF_KOI8_UV) $(PSF_KOI8_U) $(PSF_XOS4_2)
|
||||
|
||||
PSF_VGAW_8859_1 = ter-114v.psf ter-116v.psf
|
||||
PSF_VGAW_8859_2 = ter-214v.psf ter-216v.psf
|
||||
PSF_VGAW_8859_7 = ter-714v.psf ter-716v.psf
|
||||
PSF_VGAW_8859_9 = ter-914v.psf ter-916v.psf
|
||||
PSF_VGAW_MS_1251 = ter-c14v.psf ter-c16v.psf
|
||||
PSF_VGAW_8859_13 = ter-d14v.psf ter-d16v.psf
|
||||
PSF_VGAW_8859_16 = ter-g14v.psf ter-g16v.psf
|
||||
PSF_VGAW_MS_1255 = ter-h14v.psf ter-h16v.psf
|
||||
PSF_VGAW_IBM_437 = ter-i14v.psf ter-i16v.psf
|
||||
PSF_VGAW_KOI8_RV = ter-k14v.psf ter-k16v.psf
|
||||
PSF_VGAW_BG_MIK = ter-m14v.psf ter-m16v.psf
|
||||
PSF_VGAW_PT_154 = ter-p14v.psf ter-p16v.psf
|
||||
PSF_VGAW_KOI8_UV = ter-u14v.psf ter-u16v.psf
|
||||
PSF_VGAW_XOS4_2 = ter-v14v.psf ter-v16v.psf
|
||||
PSF_VGAW = $(PSF_VGAW_8859_1) $(PSF_VGAW_8859_2) $(PSF_VGAW_8859_7) $(PSF_VGAW_8859_9) $(PSF_VGAW_MS_1251) $(PSF_VGAW_8859_13) $(PSF_VGAW_8859_16) $(PSF_VGAW_MS_1255) $(PSF_VGAW_IBM_437) $(PSF_VGAW_KOI8_RV) $(PSF_VGAW_BG_MIK) $(PSF_VGAW_PT_154) $(PSF_VGAW_KOI8_UV) $(PSF_VGAW_XOS4_2)
|
||||
|
||||
PCF_8859_1 = ter-112n.pcf ter-112b.pcf ter-114n.pcf ter-114b.pcf ter-116n.pcf ter-116b.pcf ter-118n.pcf ter-118b.pcf ter-120n.pcf ter-120b.pcf ter-122n.pcf ter-122b.pcf ter-124n.pcf ter-124b.pcf ter-128n.pcf ter-128b.pcf ter-132n.pcf ter-132b.pcf
|
||||
PCF_8859_2 = ter-212n.pcf ter-212b.pcf ter-214n.pcf ter-214b.pcf ter-216n.pcf ter-216b.pcf ter-218n.pcf ter-218b.pcf ter-220n.pcf ter-220b.pcf ter-222n.pcf ter-222b.pcf ter-224n.pcf ter-224b.pcf ter-228n.pcf ter-228b.pcf ter-232n.pcf ter-232b.pcf
|
||||
PCF_8859_5 = ter-512n.pcf ter-512b.pcf ter-514n.pcf ter-514b.pcf ter-516n.pcf ter-516b.pcf ter-518n.pcf ter-518b.pcf ter-520n.pcf ter-520b.pcf ter-522n.pcf ter-522b.pcf ter-524n.pcf ter-524b.pcf ter-528n.pcf ter-528b.pcf ter-532n.pcf ter-532b.pcf
|
||||
PCF_8859_7 = ter-712n.pcf ter-712b.pcf ter-714n.pcf ter-714b.pcf ter-716n.pcf ter-716b.pcf ter-718n.pcf ter-718b.pcf ter-720n.pcf ter-720b.pcf ter-722n.pcf ter-722b.pcf ter-724n.pcf ter-724b.pcf ter-728n.pcf ter-728b.pcf ter-732n.pcf ter-732b.pcf
|
||||
PCF_8859_9 = ter-912n.pcf ter-912b.pcf ter-914n.pcf ter-914b.pcf ter-916n.pcf ter-916b.pcf ter-918n.pcf ter-918b.pcf ter-920n.pcf ter-920b.pcf ter-922n.pcf ter-922b.pcf ter-924n.pcf ter-924b.pcf ter-928n.pcf ter-928b.pcf ter-932n.pcf ter-932b.pcf
|
||||
PCF_MS_1251 = ter-c12n.pcf ter-c12b.pcf ter-c14n.pcf ter-c14b.pcf ter-c16n.pcf ter-c16b.pcf ter-c18n.pcf ter-c18b.pcf ter-c20n.pcf ter-c20b.pcf ter-c22n.pcf ter-c22b.pcf ter-c24n.pcf ter-c24b.pcf ter-c28n.pcf ter-c28b.pcf ter-c32n.pcf ter-c32b.pcf
|
||||
PCF_8859_13 = ter-d12n.pcf ter-d12b.pcf ter-d14n.pcf ter-d14b.pcf ter-d16n.pcf ter-d16b.pcf ter-d18n.pcf ter-d18b.pcf ter-d20n.pcf ter-d20b.pcf ter-d22n.pcf ter-d22b.pcf ter-d24n.pcf ter-d24b.pcf ter-d28n.pcf ter-d28b.pcf ter-d32n.pcf ter-d32b.pcf
|
||||
PCF_8859_15 = ter-f12n.pcf ter-f12b.pcf ter-f14n.pcf ter-f14b.pcf ter-f16n.pcf ter-f16b.pcf ter-f18n.pcf ter-f18b.pcf ter-f20n.pcf ter-f20b.pcf ter-f22n.pcf ter-f22b.pcf ter-f24n.pcf ter-f24b.pcf ter-f28n.pcf ter-f28b.pcf ter-f32n.pcf ter-f32b.pcf
|
||||
PCF_8859_16 = ter-g12n.pcf ter-g12b.pcf ter-g14n.pcf ter-g14b.pcf ter-g16n.pcf ter-g16b.pcf ter-g18n.pcf ter-g18b.pcf ter-g20n.pcf ter-g20b.pcf ter-g22n.pcf ter-g22b.pcf ter-g24n.pcf ter-g24b.pcf ter-g28n.pcf ter-g28b.pcf ter-g32n.pcf ter-g32b.pcf
|
||||
PCF_IBM_437 = ter-i12n.pcf ter-i12b.pcf ter-i14n.pcf ter-i14b.pcf ter-i16n.pcf ter-i16b.pcf ter-i18n.pcf ter-i18b.pcf ter-i20n.pcf ter-i20b.pcf ter-i22n.pcf ter-i22b.pcf ter-i24n.pcf ter-i24b.pcf ter-i28n.pcf ter-i28b.pcf ter-i32n.pcf ter-i32b.pcf
|
||||
PCF_KOI8_R = ter-k12n.pcf ter-k12b.pcf ter-k14n.pcf ter-k14b.pcf ter-k16n.pcf ter-k16b.pcf ter-k18n.pcf ter-k18b.pcf ter-k20n.pcf ter-k20b.pcf ter-k22n.pcf ter-k22b.pcf ter-k24n.pcf ter-k24b.pcf ter-k28n.pcf ter-k28b.pcf ter-k32n.pcf ter-k32b.pcf
|
||||
PCF_PT_154 = ter-p12n.pcf ter-p12b.pcf ter-p14n.pcf ter-p14b.pcf ter-p16n.pcf ter-p16b.pcf ter-p18n.pcf ter-p18b.pcf ter-p20n.pcf ter-p20b.pcf ter-p22n.pcf ter-p22b.pcf ter-p24n.pcf ter-p24b.pcf ter-p28n.pcf ter-p28b.pcf ter-p32n.pcf ter-p32b.pcf
|
||||
PCF_KOI8_U = ter-u12n.pcf ter-u12b.pcf ter-u14n.pcf ter-u14b.pcf ter-u16n.pcf ter-u16b.pcf ter-u18n.pcf ter-u18b.pcf ter-u20n.pcf ter-u20b.pcf ter-u22n.pcf ter-u22b.pcf ter-u24n.pcf ter-u24b.pcf ter-u28n.pcf ter-u28b.pcf ter-u32n.pcf ter-u32b.pcf
|
||||
PCF_10646_1 = ter-x12n.pcf ter-x12b.pcf ter-x14n.pcf ter-x14b.pcf ter-x16n.pcf ter-x16b.pcf ter-x18n.pcf ter-x18b.pcf ter-x20n.pcf ter-x20b.pcf ter-x22n.pcf ter-x22b.pcf ter-x24n.pcf ter-x24b.pcf ter-x28n.pcf ter-x28b.pcf ter-x32n.pcf ter-x32b.pcf
|
||||
PCF_8BIT = $(PCF_8859_1) $(PCF_8859_2) $(PCF_8859_5) $(PCF_8859_7) $(PCF_8859_9) $(PCF_MS_1251) $(PCF_8859_13) $(PCF_8859_15) $(PCF_8859_16) $(PCF_IBM_437) $(PCF_KOI8_R) $(PCF_PT_154) $(PCF_KOI8_U)
|
||||
PCF = $(PCF_10646_1)
|
||||
|
||||
# Default
|
||||
|
||||
all: $(PSF) $(PCF)
|
||||
|
||||
DESTDIR =
|
||||
prefix = /usr/local
|
||||
psfdir = $(prefix)/share/consolefonts
|
||||
x11dir = $(prefix)/share/fonts/terminus
|
||||
|
||||
install: $(PSF) $(PCF)
|
||||
mkdir -p $(DESTDIR)$(psfdir)
|
||||
for i in $(PSF) ; do gzip -c $$i > $(DESTDIR)$(psfdir)/$$i.gz ; done
|
||||
mkdir -p $(DESTDIR)$(x11dir)
|
||||
for i in $(PCF) ; do gzip -c $$i > $(DESTDIR)$(x11dir)/$$i.gz ; done
|
||||
|
||||
uninstall:
|
||||
for i in $(PSF) ; do rm -f $(DESTDIR)$(psfdir)/$$i.gz ; done
|
||||
for i in $(PCF) ; do rm -f $(DESTDIR)$(x11dir)/$$i.gz ; done
|
||||
|
||||
fontdir:
|
||||
mkfontscale $(DESTDIR)$(x11dir)
|
||||
mkfontdir $(DESTDIR)$(x11dir)
|
||||
fc-cache -f $(DESTDIR)$(x11dir)
|
||||
|
||||
# Linux Console
|
||||
|
||||
VGA_8859_1 = uni/vgagr.uni uni/ascii-h.uni uni/win-1252.uni
|
||||
VGA_8859_2 = uni/vgagr.uni uni/ascii-h.uni uni/vga-1250.uni uni/8859-2.uni
|
||||
VGA_8859_7 = uni/vgagr.uni uni/ascii-h.uni uni/vga-1253.uni uni/8859-7.uni
|
||||
VGA_8859_9 = uni/vgagr.uni uni/ascii-h.uni uni/win-1254.uni
|
||||
VGA_MS_1251 = uni/vgagr.uni uni/ascii-h.uni uni/vga-1251.uni uni/win-1251.uni
|
||||
VGA_8859_13 = uni/vgagr.uni uni/ascii-h.uni uni/vga-1257.uni uni/8859-13.uni
|
||||
VGA_8859_16 = uni/vgagr.uni uni/ascii-h.uni uni/nls-1250.uni uni/8859-16.uni
|
||||
VGA_MS_1255 = uni/vgagr.uni uni/ascii-h.uni uni/win-1255.uni
|
||||
VGA_IBM_437 = uni/cntrl.uni uni/ascii-h.uni uni/ibm-437.uni
|
||||
VGA_KOI8_RV = uni/cntrl.uni uni/ascii-h.uni uni/koibm8-r.uni
|
||||
VGA_KOI8_R = uni/cntrl.uni uni/ascii-h.uni uni/koi8-r.uni
|
||||
VGA_BG_MIK = uni/cntrl.uni uni/ascii-h.uni uni/bg-mik.uni
|
||||
VGA_PT_154 = uni/vgagr.uni uni/ascii-h.uni uni/pt-154.uni
|
||||
VGA_KOI8_UV = uni/cntrl.uni uni/ascii-h.uni uni/koibm8-u.uni
|
||||
VGA_KOI8_U = uni/cntrl.uni uni/ascii-h.uni uni/koi8-u.uni
|
||||
VGA_XOS4_2 = uni/xos4-2.uni
|
||||
|
||||
DUP_8859_1 = dup/vgagr.dup dup/ascii-h.dup
|
||||
DUP_8859_2 = dup/vgagr.dup dup/ascii-h.dup
|
||||
DUP_8859_7 = dup/vgagr.dup dup/ascii-h.dup
|
||||
DUP_8859_9 = dup/vgagr.dup dup/ascii-h.dup
|
||||
DUP_MS_1251 = dup/vgagr.dup dup/ascii-h.dup
|
||||
DUP_8859_13 = dup/vgagr.dup dup/ascii-h.dup
|
||||
DUP_8859_16 = dup/vgagr.dup dup/ascii-h.dup
|
||||
DUP_MS_1255 = dup/vgagr.dup dup/ascii-h.dup
|
||||
DUP_IBM_437 = dup/cntrl.dup dup/ascii-h.dup dup/ibm-437.dup
|
||||
DUP_KOI8_RV = dup/cntrl.dup dup/ascii-h.dup dup/koi8.dup
|
||||
DUP_KOI8_R = dup/cntrl.dup dup/ascii-h.dup dup/koi8.dup
|
||||
DUP_BG_MIK = dup/cntrl.dup dup/ascii-h.dup dup/ibm-437.dup
|
||||
DUP_PT_154 = dup/vgagr.dup dup/ascii-h.dup
|
||||
DUP_KOI8_UV = dup/cntrl.dup dup/ascii-h.dup dup/koi8.dup
|
||||
DUP_KOI8_U = dup/cntrl.dup dup/ascii-h.dup dup/koi8.dup
|
||||
DUP_XOS4_2 = dup/vgagr.dup dup/xos4-2.dup
|
||||
|
||||
$(PSF_8859_1) $(PSF_VGAW_8859_1): ter-1%.psf : ter-u%.bdf $(VGA_8859_1) $(DUP_8859_1)
|
||||
$(UCS2ANY) $< $(REG_8859_1) $(VGA_8859_1) | $(BDF2PSF) -o $@ $(DUP_8859_1)
|
||||
|
||||
$(PSF_8859_2) $(PSF_VGAW_8859_2): ter-2%.psf : ter-u%.bdf $(VGA_8859_2) $(DUP_8859_2)
|
||||
$(UCS2ANY) $< $(REG_8859_2) $(VGA_8859_2) | $(BDF2PSF) -o $@ $(DUP_8859_2)
|
||||
|
||||
$(PSF_8859_7) $(PSF_VGAW_8859_7): ter-7%.psf : ter-u%.bdf $(VGA_8859_7) $(DUP_8859_7)
|
||||
$(UCS2ANY) $< $(REG_8859_7) $(VGA_8859_7) | $(BDF2PSF) -o $@ $(DUP_8859_7)
|
||||
|
||||
$(PSF_8859_9) $(PSF_VGAW_8859_9): ter-9%.psf : ter-u%.bdf $(VGA_8859_9) $(DUP_8859_9)
|
||||
$(UCS2ANY) $< $(REG_8859_9) $(VGA_8859_9) | $(BDF2PSF) -o $@ $(DUP_8859_9)
|
||||
|
||||
$(PSF_MS_1251) $(PSF_VGAW_MS_1251): ter-c%.psf : ter-u%.bdf $(VGA_MS_1251) $(DUP_MS_1251)
|
||||
$(UCS2ANY) $< $(REG_MS_1251) $(VGA_MS_1251) | $(BDF2PSF) -o $@ $(DUP_MS_1251)
|
||||
|
||||
$(PSF_8859_13) $(PSF_VGAW_8859_13): ter-d%.psf : ter-u%.bdf $(VGA_8859_13) $(DUP_8859_13)
|
||||
$(UCS2ANY) $< $(REG_8859_13) $(VGA_8859_13) | $(BDF2PSF) -o $@ $(DUP_8859_13)
|
||||
|
||||
$(PSF_8859_16) $(PSF_VGAW_8859_16): ter-g%.psf : ter-u%.bdf $(VGA_8859_16) $(DUP_8859_16)
|
||||
$(UCS2ANY) $< $(REG_8859_16) $(VGA_8859_16) | $(BDF2PSF) -o $@ $(DUP_8859_16)
|
||||
|
||||
$(PSF_MS_1255) $(PSF_VGAW_MS_1255): ter-h%.psf : ter-u%.bdf $(VGA_MS_1255) $(DUP_MS_1255)
|
||||
$(UCS2ANY) $< $(REG_MS_1255) $(VGA_MS_1255) | $(BDF2PSF) -o $@ $(DUP_MS_1255)
|
||||
|
||||
$(PSF_IBM_437) $(PSF_VGAW_IBM_437): ter-i%.psf : ter-u%.bdf $(VGA_IBM_437) $(DUP_IBM_437)
|
||||
$(UCS2ANY) $< $(REG_IBM_437) $(VGA_IBM_437) | $(BDF2PSF) -o $@ $(DUP_IBM_437)
|
||||
|
||||
$(PSF_KOI8_RV) $(PSF_VGAW_KOI8_RV): ter-k%.psf : ter-u%.bdf $(VGA_KOI8_RV) $(DUP_KOI8_RV)
|
||||
$(UCS2ANY) $< $(REG_KOI8_R) $(VGA_KOI8_RV) | $(BDF2PSF) -o $@ $(DUP_KOI8_RV)
|
||||
|
||||
$(PSF_KOI8_R): ter-k%.psf : ter-u%.bdf $(VGA_KOI8_R) $(DUP_KOI8_R)
|
||||
$(UCS2ANY) $< $(REG_KOI8_R) $(VGA_KOI8_R) | $(BDF2PSF) -o $@ $(DUP_KOI8_R)
|
||||
|
||||
$(PSF_BG_MIK) $(PSF_VGAW_BG_MIK): ter-m%.psf : ter-u%.bdf $(VGA_BG_MIK) $(DUP_BG_MIK)
|
||||
$(UCS2ANY) $< $(REG_BG_MIK) $(VGA_BG_MIK) | $(BDF2PSF) -o $@ $(DUP_BG_MIK)
|
||||
|
||||
$(PSF_PT_154) $(PSF_VGAW_PT_154): ter-p%.psf : ter-u%.bdf $(VGA_PT_154) $(DUP_PT_154)
|
||||
$(UCS2ANY) $< $(REG_PT_154) $(VGA_PT_154) | $(BDF2PSF) -o $@ $(DUP_PT_154)
|
||||
|
||||
$(PSF_KOI8_UV) $(PSF_VGAW_KOI8_UV): ter-u%.psf : ter-u%.bdf $(VGA_KOI8_UV) $(DUP_KOI8_UV)
|
||||
$(UCS2ANY) $< $(REG_KOI8_R) $(VGA_KOI8_UV) | $(BDF2PSF) -o $@ $(DUP_KOI8_UV)
|
||||
|
||||
$(PSF_KOI8_U): ter-u%.psf : ter-u%.bdf $(VGA_KOI8_U) $(DUP_KOI8_U)
|
||||
$(UCS2ANY) $< $(REG_KOI8_U) $(VGA_KOI8_U) | $(BDF2PSF) -o $@ $(DUP_KOI8_U)
|
||||
|
||||
$(PSF_XOS4_2) $(PSF_VGAW_XOS4_2): ter-v%.psf : ter-u%.bdf $(VGA_XOS4_2) $(DUP_XOS4_2)
|
||||
$(UCS2ANY) $< $(REG_XOS4_2) $(VGA_XOS4_2) | $(BDF2PSF) -o $@ $(DUP_XOS4_2)
|
||||
|
||||
psf: $(PSF)
|
||||
|
||||
install-psf: $(PSF)
|
||||
mkdir -p $(DESTDIR)$(psfdir)
|
||||
for i in $(PSF) ; do gzip -c $$i > $(DESTDIR)$(psfdir)/$$i.gz ; done
|
||||
|
||||
uninstall-psf:
|
||||
for i in $(PSF) ; do rm -f $(DESTDIR)$(psfdir)/$$i.gz ; done
|
||||
|
||||
psf-vgaw: $(PSF_VGAW)
|
||||
|
||||
install-psf-vgaw: $(PSF_VGAW)
|
||||
mkdir -p $(DESTDIR)$(psfdir)
|
||||
for i in $(PSF_VGAW) ; do gzip -c $$i > $(DESTDIR)$(psfdir)/$$i.gz ; done
|
||||
|
||||
uninstall-psf-vgaw:
|
||||
for i in $(PSF_VGAW) ; do rm -f $(DESTDIR)$(psfdir)/$$i.gz ; done
|
||||
|
||||
psfref = $(psfdir)/README.terminus
|
||||
|
||||
install-psf-ref: README
|
||||
mkdir -p $(DESTDIR)$(psfdir)
|
||||
sed -e"/^2\.4/,/^2\.5/p" -n README | grep -v "^2\." > $(DESTDIR)$(psfref)
|
||||
|
||||
uninstall-psf-ref:
|
||||
rm -f $(DESTDIR)$(psfref)
|
||||
|
||||
# X11 Window System
|
||||
|
||||
X11_8859_1 = uni/x11gr.uni uni/ascii-h.uni uni/win-1252.uni
|
||||
X11_8859_2 = uni/x11gr.uni uni/ascii-h.uni uni/empty.uni uni/8859-2.uni
|
||||
X11_8859_5 = uni/x11gr.uni uni/ascii-h.uni uni/empty.uni uni/8859-5.uni
|
||||
X11_8859_7 = uni/x11gr.uni uni/ascii-h.uni uni/empty.uni uni/8859-7.uni
|
||||
X11_8859_9 = uni/x11gr.uni uni/ascii-h.uni uni/win-1254.uni
|
||||
X11_MS_1251 = uni/x11gr.uni uni/ascii-h.uni uni/x11-1251.uni uni/win-1251.uni
|
||||
X11_8859_13 = uni/x11gr.uni uni/ascii-h.uni uni/x11-1257.uni uni/8859-13.uni
|
||||
X11_8859_15 = uni/x11gr.uni uni/ascii-h.uni uni/empty.uni uni/8859-15.uni
|
||||
X11_8859_16 = uni/x11gr.uni uni/ascii-h.uni uni/empty.uni uni/8859-16.uni
|
||||
X11_IBM_437 = uni/cntrl.uni uni/ascii-h.uni uni/ibm-437.uni
|
||||
X11_KOI8_R = uni/x11gr.uni uni/ascii-h.uni uni/koi8-r.uni
|
||||
X11_PT_154 = uni/x11gr.uni uni/ascii-h.uni uni/pt-154.uni
|
||||
X11_KOI8_U = uni/x11gr.uni uni/ascii-h.uni uni/koi8-u.uni
|
||||
X11_10646_1 = uni/x11gr.uni uni/10646-1.uni
|
||||
|
||||
$(PCF_8859_1): ter-1%.pcf : ter-u%.bdf $(X11_8859_1)
|
||||
$(UCS2X11) $< $(REG_8859_1) $(X11_8859_1) | $(BDF2PCF) -o $@
|
||||
|
||||
$(PCF_8859_2): ter-2%.pcf : ter-u%.bdf $(X11_8859_2)
|
||||
$(UCS2X11) $< $(REG_8859_2) $(X11_8859_2) | $(BDF2PCF) -o $@
|
||||
|
||||
$(PCF_8859_5): ter-5%.pcf : ter-u%.bdf $(X11_8859_5)
|
||||
$(UCS2X11) $< $(REG_8859_5) $(X11_8859_5) | $(BDF2PCF) -o $@
|
||||
|
||||
$(PCF_8859_7): ter-7%.pcf : ter-u%.bdf $(X11_8859_7)
|
||||
$(UCS2X11) $< $(REG_8859_7) $(X11_8859_7) | $(BDF2PCF) -o $@
|
||||
|
||||
$(PCF_8859_9): ter-9%.pcf : ter-u%.bdf $(X11_8859_9)
|
||||
$(UCS2X11) $< $(REG_8859_9) $(X11_8859_9) | $(BDF2PCF) -o $@
|
||||
|
||||
$(PCF_MS_1251): ter-c%.pcf : ter-u%.bdf $(X11_MS_1251)
|
||||
$(UCS2X11) $< $(REG_MS_1251) $(X11_MS_1251) | $(BDF2PCF) -o $@
|
||||
|
||||
$(PCF_8859_13): ter-d%.pcf : ter-u%.bdf $(X11_8859_13)
|
||||
$(UCS2X11) $< $(REG_8859_13) $(X11_8859_13) | $(BDF2PCF) -o $@
|
||||
|
||||
$(PCF_8859_15): ter-f%.pcf : ter-u%.bdf $(X11_8859_15)
|
||||
$(UCS2X11) $< $(REG_8859_15) $(X11_8859_15) | $(BDF2PCF) -o $@
|
||||
|
||||
$(PCF_8859_16): ter-g%.pcf : ter-u%.bdf $(X11_8859_16)
|
||||
$(UCS2X11) $< $(REG_8859_16) $(X11_8859_16) | $(BDF2PCF) -o $@
|
||||
|
||||
$(PCF_IBM_437): ter-i%.pcf : ter-u%.bdf $(X11_IBM_437)
|
||||
$(UCS2X11) $< $(REG_IBM_437) $(X11_IBM_437) | $(BDF2PCF) -o $@
|
||||
|
||||
$(PCF_KOI8_R): ter-k%.pcf : ter-u%.bdf $(X11_KOI8_R)
|
||||
$(UCS2X11) $< $(REG_KOI8_R) $(X11_KOI8_R) | $(BDF2PCF) -o $@
|
||||
|
||||
$(PCF_PT_154): ter-p%.pcf : ter-u%.bdf $(X11_PT_154)
|
||||
$(UCS2X11) $< $(REG_PT_154) $(X11_PT_154) | $(BDF2PCF) -o $@
|
||||
|
||||
$(PCF_KOI8_U): ter-u%.pcf : ter-u%.bdf $(X11_KOI8_U)
|
||||
$(UCS2X11) $< $(REG_KOI8_U) $(X11_KOI8_U) | $(BDF2PCF) -o $@
|
||||
|
||||
$(PCF_10646_1): ter-x%.pcf : ter-u%.bdf $(X11_10646_1)
|
||||
$(UCS2X11) $< $(REG_10646_1) $(X11_10646_1) | $(BDF2PCF) -o $@
|
||||
|
||||
pcf: $(PCF)
|
||||
|
||||
install-pcf: $(PCF)
|
||||
mkdir -p $(DESTDIR)$(x11dir)
|
||||
for i in $(PCF) ; do gzip -c $$i > $(DESTDIR)$(x11dir)/$$i.gz ; done
|
||||
|
||||
uninstall-pcf:
|
||||
for i in $(PCF) ; do rm -f $(DESTDIR)$(x11dir)/$$i.gz ; done
|
||||
|
||||
pcf-8bit: $(PCF_8BIT)
|
||||
|
||||
install-pcf-8bit: $(PCF_8BIT)
|
||||
mkdir -p $(DESTDIR)$(x11dir)
|
||||
for i in $(PCF_8BIT) ; do gzip -c $$i > $(DESTDIR)$(x11dir)/$$i.gz ; done
|
||||
|
||||
uninstall-pcf-8bit:
|
||||
for i in $(PCF_8BIT) ; do rm -f $(DESTDIR)$(x11dir)/$$i.gz ; done
|
||||
|
||||
# Cleanup
|
||||
|
||||
clean:
|
||||
rm -f $(PSF) $(PSF_VGAW) $(PCF) $(PCF_8BIT) $(FNT)
|
||||
|
||||
.PHONY: all install uninstall fontdir psf install-psf uninstall-psf psf-vgaw install-psf-vgaw uninstall-psf-vgaw install-psf-ref uninstall-psf-ref pcf install-pcf uninstall-pcf pcf-8bit install-pcf-8bit uninstall-pcf-8bit clean
|
94
OFL.TXT
Normal file
94
OFL.TXT
Normal file
@ -0,0 +1,94 @@
|
||||
Copyright (c) 2019 Dimitar Toshkov Zhekov,
|
||||
with Reserved Font Name "Terminus Font".
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
http://scripts.sil.org/OFL
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
356
README
Normal file
356
README
Normal file
@ -0,0 +1,356 @@
|
||||
Contents:
|
||||
|
||||
1. About.
|
||||
1.1. Build requitements.
|
||||
1.2. Quick installation.
|
||||
1.3. Legend.
|
||||
1.4. Variants.
|
||||
1.5. Notes.
|
||||
1.6. Alternative tools.
|
||||
|
||||
2. Linux console.
|
||||
2.1. Installation.
|
||||
2.2. Usage.
|
||||
2.3. Quick reference.
|
||||
2.4. Legend.
|
||||
2.5. Notes.
|
||||
|
||||
3. X11 Window System.
|
||||
3.1. Installation.
|
||||
3.2. Notes.
|
||||
|
||||
4. Microsoft Windows.
|
||||
4.1. Installation package.
|
||||
4.2. Font file only.
|
||||
4.3. Notes.
|
||||
|
||||
5. Frequently Asked Questions.
|
||||
|
||||
6. Legal information.
|
||||
6.1. Licenses.
|
||||
6.2. Copyright.
|
||||
|
||||
--
|
||||
|
||||
1. About.
|
||||
|
||||
This archive contains source code for generating and installing Terminus
|
||||
Font for Linux console, X11 Window System and Microsoft Windows.
|
||||
|
||||
- version 4.48
|
||||
- sizes 6x12, 8x14, 8x16, 10x18, 10x20, 11x22, 12x24, 14x28, 16x32
|
||||
- weights normal, bold, CRT VGA bold
|
||||
- characters 1354
|
||||
- format Bitmap Distribution Format (BDF) version 2.1
|
||||
|
||||
The character set covers about 120 language sets and supports ISO8859-1/2/5/
|
||||
7/9/13/15/16, Paratype-PT154/PT254, KOI8-R/U/E/F, Esperanto and many IBM,
|
||||
Windows and Macintosh code pages, as well as the IBM VGA, vt100 and xterm
|
||||
pseudographic characters.
|
||||
|
||||
|
||||
1.1. Build requirements.
|
||||
|
||||
- GNU make
|
||||
- Python 3.5.0+ (or node.js 6.9.0+ as an alternative)
|
||||
- for X11 only: bdftopcf
|
||||
- for the Windows installer only: GCC for Win32/i686, NSIS and patch.
|
||||
|
||||
|
||||
1.2. Quick installation.
|
||||
|
||||
The commands:
|
||||
|
||||
$ ./configure [--prefix=PREFIX]
|
||||
$ make -j8
|
||||
# make install fontdir
|
||||
|
||||
compile and install the Linux console and X11 Window System fonts.
|
||||
The default PREFIX is /usr/local.
|
||||
|
||||
|
||||
1.3. Legend.
|
||||
|
||||
The file names are structured as follows:
|
||||
|
||||
ter-u<SIZE><STYLE>.bdf
|
||||
|
||||
<SIZE> is the font height. <STYLE> is n for normal (all sizes), b for bold
|
||||
(all sizes except 6x12), and v for CRT VGA bold (8x14 and 8x16 only, uses
|
||||
the eight character matrix column).
|
||||
|
||||
|
||||
1.4. Variants.
|
||||
|
||||
Some characters are implemented in two variants. To use the alternate
|
||||
variant, execute:
|
||||
|
||||
$ patch -p1 -i alt/<NAME>.diff
|
||||
|
||||
before making the font. See the font WEB page for examples. If you want to
|
||||
combine hi2 with dv1 and/or ka2, apply hi2 and then hi2-dv1 and/or hi2-ka2.
|
||||
The default variant for unicode range 2800-28FF is oriented towards
|
||||
pseudographics.
|
||||
|
||||
|
||||
1.5. Notes.
|
||||
|
||||
The commands marked with $ can be executed by a regular user.
|
||||
The configure commands are optional.
|
||||
"make -j8" runs 8 jobs in parallel.
|
||||
|
||||
Sizes 6x12, 11x22, 14x28-bold and 16x32-normal are worse than the others.
|
||||
Avoid them.
|
||||
|
||||
210E and 210F are not italic.
|
||||
|
||||
226A, 226B and the double struck letters are not very good.
|
||||
|
||||
2135 may be wrong.
|
||||
|
||||
The hebrew letters and sheqel are uppercase height, which is an attempt to
|
||||
compensate for the missing width.
|
||||
|
||||
|
||||
1.6. Alternative tools.
|
||||
|
||||
If your Python 3 executable is named python instead if python3:
|
||||
|
||||
$ ./configure INT=python
|
||||
|
||||
To use node.js instead of python (slower):
|
||||
|
||||
$ ./configure INT=node EXT=js
|
||||
|
||||
--
|
||||
|
||||
2. Linux console.
|
||||
|
||||
- weights normal, bold, CRT VGA-bold
|
||||
- code pages ISO8859-1/ISO8859-15/Windows-1252, ISO8859-2/Windows-1250,
|
||||
Windows-1251/ISO8859-5, ISO8859-9/Windows-1254, ISO8859-16,
|
||||
ISO8859-7/Windows-1253, ISO8859-13/Windows-1257, IBM-437,
|
||||
Bulgarian-MIK, KOI8-R, KOI8-U, Paratype-PT154, combined
|
||||
- format PC Screen Font (PSF) with unicode data
|
||||
|
||||
|
||||
2.1. Installation.
|
||||
|
||||
$ ./configure [--prefix=PREFIX | --psfdir=DIRECTORY]
|
||||
$ make -j8 psf
|
||||
# make install-psf
|
||||
|
||||
The files are compressed with gzip and installed in DIRECTORY. The default
|
||||
DIRECTORY is PREFIX/share/consolefonts. For kbd, you may need to change it
|
||||
to PREFIX/lib/kbd/consolefonts or PREFIX/share/kbd/consolefonts, depending
|
||||
on the kbd version.
|
||||
|
||||
The CRT VGA bold weight fonts, suitable for real CRT text modes only, are
|
||||
not installed by default. To install them, execute:
|
||||
|
||||
$ make -j8 psf-vgaw
|
||||
# make install-psf-vgaw
|
||||
|
||||
|
||||
2.2. Usage.
|
||||
|
||||
To load a cont in consoletools:
|
||||
|
||||
$ consolechars [-m MAPPING] -f ter-<X><SIZE><STYLE>
|
||||
|
||||
To load a font in kbd:
|
||||
|
||||
$ setfont [-m MAPPING] ter-<X><SIZE><STYLE>
|
||||
|
||||
where <X> is a character identifying the code page as listed in p.2.4.
|
||||
|
||||
|
||||
2.3. Quick reference.
|
||||
|
||||
The commands:
|
||||
|
||||
$ ./configure [--prefix=PREFIX | --psfdir=DIRECTORY | --psfref=FILENAME]
|
||||
# make install-psf-ref
|
||||
|
||||
install the text from p.2.4 as FILENAME (the default is README.terminus)
|
||||
in DIRECTORY.
|
||||
|
||||
|
||||
2.4. Legend.
|
||||
|
||||
names mappings covered codepage(s)
|
||||
|
||||
ter-1* iso01, iso15, cp1252 ISO8859-1, ISO8859-15, Windows-1252
|
||||
ter-2* iso02, cp1250 ISO8859-2, Windows-1250
|
||||
ter-7* iso07, cp1253 ISO8859-7, Windows-1253
|
||||
ter-9* iso09, cp1254 ISO8859-9, Windows-1254
|
||||
ter-c* cp1251, iso05 Windows-1251, ISO8859-5
|
||||
ter-d* iso13, cp1257 ISO8859-13, Windows-1257
|
||||
ter-g* iso16 ISO8859-16
|
||||
ter-h* cp1255, iso08 Windows-1258, ISO8859-8
|
||||
ter-i* cp437 IBM-437
|
||||
ter-k* koi8r KOI8-R
|
||||
ter-m* mik Bulgarian-MIK
|
||||
ter-p* pt154 Paratype-PT154
|
||||
ter-u* koi8u KOI8-U
|
||||
|
||||
ter-v* all mappings / code pages listed above and many others, about 110
|
||||
language sets, 8 or 16 foreground colors depending on the kernel and
|
||||
console driver versions
|
||||
|
||||
names weight
|
||||
|
||||
ter-*n normal
|
||||
ter-*b bold
|
||||
ter-*v CRT VGA bold
|
||||
|
||||
|
||||
2.5. Notes.
|
||||
|
||||
The combined code page is based on IBM-437 (character 0xFF is ogonek).
|
||||
The ISO8859-16 font also includes all letters and accents from Windows-1250.
|
||||
|
||||
--
|
||||
|
||||
3. X11 Window System.
|
||||
|
||||
- weights normal, bold
|
||||
- code pages ISO8859-1/Windows-1252, ISO8859-2, ISO8859-5, ISO8859-7,
|
||||
ISO8859-9/Windows-1254, ISO8859-13, ISO8859-15, ISO8859-16,
|
||||
Windows-1251, IBM-437, KOI8-R, KOI8-U, Paratype-PT154 and
|
||||
ISO10646-1 (unicode)
|
||||
- format Portable Compiled Font (PCF)
|
||||
|
||||
|
||||
3.1. Installation.
|
||||
|
||||
$ ./configure [--prefix=PREFIX | --x11dir=DIRECTORY]
|
||||
$ make -j8 pcf
|
||||
# make install-pcf
|
||||
|
||||
The files are compressed with gzip and installed in DIRECTORY. The default
|
||||
DIRECTORY is PREFIX/share/fonts/terminus. Requires bdftopcf.
|
||||
|
||||
A copy of the normal 6x12 font is installed as "bold", because some X11
|
||||
libraries and applications substitute the missing bold fonts by shifting the
|
||||
normal fonts, and others do not recognize the bold weight at all if the
|
||||
lowest font size lacks it.
|
||||
|
||||
To update the font cache in DIRECTORY after (un)installation, run:
|
||||
|
||||
# make fontdir
|
||||
|
||||
The configuration file which lists the font directories must contain
|
||||
DIRECTORY. The X11 server may need to be restarted so the font list can be
|
||||
updated.
|
||||
|
||||
By default, only the unicode (ISO10646-1) font is installed. To install the
|
||||
other code pages:
|
||||
|
||||
$ make -j8 pcf-8bit
|
||||
# make install-pcf-8bit
|
||||
|
||||
|
||||
3.2. Notes.
|
||||
|
||||
The ISO8859-1 and ISO8859-9 fonts contain the Windows Western characters and
|
||||
can be used as Windows-1252 and Windows-1254 respectively.
|
||||
|
||||
--
|
||||
|
||||
4. Microsoft Windows.
|
||||
|
||||
- weights normal, bold
|
||||
- code pages Windows-1252, 1250, 1253, 1254, 1251 and 1257
|
||||
- format Font File Format version 2.0, compiled into FON
|
||||
|
||||
|
||||
4.1. Installation package.
|
||||
|
||||
Make sure that no variant patches are applied to the font (p.1.4).
|
||||
|
||||
> cd win32
|
||||
> build
|
||||
|
||||
Be patient, the process may take several minutes.
|
||||
After that, open terminus.nsi and compile it.
|
||||
|
||||
|
||||
4.2. Font file only.
|
||||
|
||||
> copy *.bdf win32
|
||||
> cd win32
|
||||
> make -j8
|
||||
|
||||
You can install terminus.fon via the regular means.
|
||||
|
||||
|
||||
4.3. Notes.
|
||||
|
||||
The Windows code pages contain a total of 384 characters. All other
|
||||
characters (math, pseudographics etc.) are not currently available.
|
||||
|
||||
--
|
||||
|
||||
5. Frequently Asked Questions.
|
||||
|
||||
Q. Italic version?
|
||||
|
||||
A. No. The quality is significantly lower, and preserving the font width
|
||||
requires overlapping characters, which are not handled very well by X11/Xft.
|
||||
You can try mkitalic from FreeBSD or bdfslant from Debian.
|
||||
|
||||
Q. Scalable version?
|
||||
|
||||
A. Probably not. The font uses a lot of straight horizontal and vertical
|
||||
lines, which is good for a bitmap, but not so much for a vector font. A
|
||||
bitmap font packaged as TTF seems possible.
|
||||
|
||||
Q. How about some new characters?
|
||||
|
||||
A. Contact me and be ready to help.
|
||||
|
||||
Q. The bold 6x12 font...
|
||||
|
||||
A. ...does not exist, there is no space for a bold font in a 6x12 matrix.
|
||||
However, the "normal" font is somewhere between.
|
||||
|
||||
Q. The font works in X11/Motif, but not in GNOME/KDE/Xfce.
|
||||
|
||||
A. Try adding 75-yes-terminus.conf to the Fontconfig configuration files.
|
||||
For some Fontconfig versions, you may need to replace the text "Terminus"
|
||||
in 75-yes-terminus.conf with "xos4 Terminus", though that is unlikely.
|
||||
See also mkfontscale(1), mkfontdir(1), fc-cache(1), xorg.conf(5), xfs(1),
|
||||
xlsfonts(1), fonts-conf(5) etc.
|
||||
|
||||
Q. My terminal emulator does not display cyrillic/pseudographics/...
|
||||
A. If you have the 8-bit X11 code pages installed, and your emulator uses
|
||||
"XLFD" font names, make sure hat name ends with "-10616-1" instead of
|
||||
"-*-*".
|
||||
|
||||
--
|
||||
|
||||
6. Legal information.
|
||||
|
||||
|
||||
6.1. Licenses.
|
||||
|
||||
Terminus Font is licensed under the SIL Open Font License, Version 1.1.
|
||||
The license is included as OFL.TXT, and is also available with a FAQ at:
|
||||
http://scripts.sil.org/OFL
|
||||
|
||||
The font includes two variants of unicode range 2800-28FF, but does not
|
||||
support Braille in any way.
|
||||
|
||||
The configure files, python and javascript sources are distributed under
|
||||
the GNU General Public License version 2.0 or (at your choice) any later
|
||||
version.
|
||||
|
||||
|
||||
6.2. Copyright.
|
||||
|
||||
Terminus Font 4.48, Copyright (C) 2019 Dimitar Toshkov Zhekov.
|
||||
Report bugs to <dimitar.zhekov@gmail.com>
|
||||
|
||||
Thanks to Anton Zinoviev, Tim Allen, Kir Koliushkin, Antonios Galanopoulos
|
||||
and everyone else who helped.
|
356
README-BG
Normal file
356
README-BG
Normal file
@ -0,0 +1,356 @@
|
||||
Съдържание:
|
||||
|
||||
1. Обща информация.
|
||||
1.1. Изисквания за компилация.
|
||||
1.2. Бърза инсталация.
|
||||
1.3. Легенда.
|
||||
1.4. Варианти.
|
||||
1.5. Забележки.
|
||||
1.6. Алтернативни средства.
|
||||
|
||||
2. Линукс конзола.
|
||||
2.1. Инсталация.
|
||||
2.2. Използване.
|
||||
2.3. Кратко описание.
|
||||
2.4. Легенда.
|
||||
2.5. Забележки.
|
||||
|
||||
3. X11 Window System.
|
||||
3.1. Инсталация.
|
||||
3.2. Забележки.
|
||||
|
||||
5. Microsoft Windows.
|
||||
4.1. Инсталационен пакет.
|
||||
4.2. Само файл с шрифта.
|
||||
4.3. Забележки.
|
||||
|
||||
5. Често задавани въпроси.
|
||||
|
||||
6. Правна информация.
|
||||
6.1. Лицензи.
|
||||
6.2. Авторство.
|
||||
|
||||
--
|
||||
|
||||
1. Обща информация.
|
||||
|
||||
Този архив съдържа изходен код за генериране и инсталиране на шрифта
|
||||
Терминус за Линукс конзола, X11 Window System и Microsoft Windows.
|
||||
|
||||
- версия 4.48
|
||||
- размери 6x12, 8x14, 8x16, 10x18, 10x20, 11x22, 12x24, 14x28, 16x32
|
||||
- тежести нормален, удебелен, CRT VGA-удебелен
|
||||
- символи 1354
|
||||
- формат Bitmap Distribution Format (BDF) версия 2.1
|
||||
|
||||
Набора символи покрива около 120 езикови набора и поддържа ISO8859-1/2/5/7/
|
||||
9/13/15/16, Paratype-PT154/PT254, KOI8-R/U/E/F, Есперанто, много кодови
|
||||
страници на IBM, Windows и Macintosh, а също и превдографичните символи на
|
||||
VGA, vt100 и xterm.
|
||||
|
||||
|
||||
1.1. Изисквания за компилация.
|
||||
|
||||
- GNU make
|
||||
- Python 3.5.0+ (или node.js 6.9.0+ като алтернатива)
|
||||
- само за X11: bdftopcf
|
||||
- само за Windows инсталатора: GCC за Win32/i686, NSIS и patch.
|
||||
|
||||
|
||||
1.2. Бърза инсталация.
|
||||
|
||||
Командите:
|
||||
|
||||
$ ./configure [--prefix=PREFIX]
|
||||
$ make -j8
|
||||
# make install fontdir
|
||||
|
||||
компилират и инсталират шрифтовете за Линукс конзола и X11 Window System.
|
||||
Подразбиращия се префикс е /usr/local.
|
||||
|
||||
|
||||
1.3. Легенда.
|
||||
|
||||
Имената на файловете са структурирани както следва:
|
||||
|
||||
ter-u<РАЗМЕР><СТИЛ>.bdf
|
||||
|
||||
където <РАЗМЕР> е височината в точки, а <СТИЛ> е n за нормален (всички
|
||||
размери), b за удебелен (всички размери освен 6x12), и v за CRT VGA удебелен
|
||||
(само за 8x14 и 8x16, използва 8 колона на символната матрица).
|
||||
|
||||
|
||||
1.4. Варианти.
|
||||
|
||||
Някои символи са реализирани в два варианта. За да използвате алтернативния
|
||||
вариант, преди инсталация изпълнете:
|
||||
|
||||
$ patch -p1 -i alt/<ИМЕ>.diff
|
||||
|
||||
Примери за разликите межда вариантите са дадени на страницата на шрифта.
|
||||
Ако желаете да комбинирате hi2 с dv1 и/или ka2, приложете първо hi2, и след
|
||||
това hi2-dv1 и/или hi2-ka2. Подразбиращия се вариант на юникод обхвата
|
||||
2800-28FF е ориентиран към псевдографика.
|
||||
|
||||
|
||||
1.5. Забележки.
|
||||
|
||||
Командите отбелязани с $ могат да се изпълняват от обикновен потребител.
|
||||
Командите за конфигуриране не са задължителни.
|
||||
"make -j8" изпълнява паралелно 8 задачи.
|
||||
|
||||
Размери 6x12, 11x22, 14x28-удебелен и 16x32-нормален са с по-лошо качество
|
||||
от останалите. Избягвайте ги.
|
||||
|
||||
210E и 210F не са наклонени.
|
||||
|
||||
226A, 226B и двойно начертаните букви не са много добри.
|
||||
|
||||
2135 може би е грешен.
|
||||
|
||||
В опит да се компенсира липсващата ширина, буквите от иврит и знака шекел са
|
||||
с височина на главни букви.
|
||||
|
||||
|
||||
1.6. Алтернативни средства.
|
||||
|
||||
Ако изпълнимия файл на Python 3 интерпретатора е python вместо python3:
|
||||
|
||||
$ ./configure INT=python
|
||||
|
||||
За да използвате node.js вместо python (по-бавно е):
|
||||
|
||||
$ ./configure INT=node EXT=js
|
||||
|
||||
--
|
||||
|
||||
2. Линукс конзола.
|
||||
|
||||
- тежести нормален, удебелен, CRT VGA-удебелен
|
||||
- кодировки ISO8859-1/ISO8859-15/Windows-1252, ISO8859-2/Windows-1250,
|
||||
Windows-1251/ISO8859-5, ISO8859-9/Windows-1254, ISO8859-16,
|
||||
ISO8859-7/Windows-1253, ISO8859-13/Windows-1257, IBM-437,
|
||||
Bulgarian-MIK, KOI8-R, KOI8-U, Paratype-PT154, комбинирана
|
||||
- формат PC Screen Font (PSF) с unicode данни
|
||||
|
||||
|
||||
2.1. Инсталация.
|
||||
|
||||
$ ./configure [--prefix=ПРЕФИКС | --psfdir=ДИРЕКТОРИЯ]
|
||||
$ make -j8 psf
|
||||
# make install-psf
|
||||
|
||||
Файловете се компресират с gzip и инсталират в ДИРЕКТОРИЯ. Подразбиращата се
|
||||
ДИРЕКТОРИЯ е ПРЕФИКС/share/consolefonts. За kbd може да се наложи да смените
|
||||
директорията на PREFIX/lib/kbd/consolefonts или
|
||||
PREFIX/share/kbd/consolefonts, в зависимост от версията на kbd.
|
||||
|
||||
CRT VGA-удебелените шрифтове, подходящи за само истински CRT текстови
|
||||
режими, не се инсталират по подразбиране. За инсталирането им изпълнете:
|
||||
|
||||
$ make -j8 psf-vgaw
|
||||
# make install-psf-vgaw
|
||||
|
||||
|
||||
2.2. Използване.
|
||||
|
||||
За зареждане на шрифт с consoletools:
|
||||
|
||||
$ consolechars [-m КОДИРОВКА] -f ter-<X><РАЗМЕР><СТИЛ>
|
||||
|
||||
За зареждане на шрифт с kbd:
|
||||
|
||||
$ setfont [-m MAPPING] ter-<X><SIZE><STYLE>
|
||||
|
||||
където <X> е символ идентифициращ кодовата страница по списъка от т.2.4.
|
||||
|
||||
|
||||
2.3. Кратко описание.
|
||||
|
||||
Командите:
|
||||
|
||||
$ ./configure [--prefix=ПРЕФИКС | --psfdir=ДИРЕКТОРИЯ | --psfref=ИМЕНАФАЙЛ]
|
||||
# make install-psf-ref
|
||||
|
||||
инсталират текста от т.2.4 (на английски) под името ИМЕНАФАЙЛ (подразбира
|
||||
се README.terminus) в ДИРЕКТОРИЯ.
|
||||
|
||||
|
||||
2.4. Легенда.
|
||||
|
||||
имена кодировки кодови страници
|
||||
|
||||
ter-1* iso01, iso15, cp1252 ISO8859-1, ISO8859-15, Windows-1252
|
||||
ter-2* iso02, cp1250 ISO8859-2, Windows-1250
|
||||
ter-7* iso07, cp1253 ISO8859-7, Windows-1253
|
||||
ter-9* iso09, cp1254 ISO8859-9, Windows-1254
|
||||
ter-c* cp1251, iso05 Windows-1251, ISO8859-5
|
||||
ter-d* iso13, cp1257 ISO8859-13, Windows-1257
|
||||
ter-g* iso16 ISO8859-16
|
||||
ter-h* cp1255, iso08 Windows-1255, ISO8859-8
|
||||
ter-i* cp437 IBM-437
|
||||
ter-k* koi8r KOI8-R
|
||||
ter-m* mik Bulgarian-MIK
|
||||
ter-p* pt154 Paratype-PT154
|
||||
ter-k* koi8u KOI8-U
|
||||
|
||||
ter-v* всички изброени по-горе кодировки / страници и много други, около
|
||||
110 езикови набора, 8 или 16 цвята за текст в зависимост от ядрото и
|
||||
конзолния драйвер
|
||||
|
||||
имена тежест
|
||||
|
||||
ter-*n нормален
|
||||
ter-*b удебелен
|
||||
ter-*v CRT VGA-удебелен
|
||||
|
||||
|
||||
2.5. Забележки.
|
||||
|
||||
Комбинираната кодова страница е базирана IBM-437 (символ 0xFF е ogonek).
|
||||
ISO8859-16 шрифта включва също всички букви и акценти от Windows-1250.
|
||||
|
||||
--
|
||||
|
||||
3. X11 Window System.
|
||||
|
||||
- тежести нормален, удебелен
|
||||
- кодировки ISO8859-1/Windows-1252, ISO8859-2, ISO8859-5, ISO8859-7,
|
||||
ISO8859-9/Windows-1254, ISO8859-13, ISO8859-15, ISO8859-16,
|
||||
Windows-1251, IBM-437, KOI8-R, KOI8-U, Paratype-PT154 и
|
||||
ISO10646-1 (уникод)
|
||||
- формат Portable Compiled Font (PCF)
|
||||
|
||||
|
||||
3.1. Инсталация.
|
||||
|
||||
$ ./configure [--prefix=ПРЕФИКС | --x11dir=ДИРЕКТОРИЯ]
|
||||
$ make pcf
|
||||
# make install-pcf
|
||||
|
||||
Файловете се компресират с gzip и инсталират в ДИРЕКТОРИЯ. Подразбиращата се
|
||||
ДИРЕКТОРИЯ е ПРЕФИКС/share/fonts/terminus. Изисква се bdftopcf.
|
||||
|
||||
Копие на нормалния 6x12 шрифт се инсталира като "удебелен", защото някои
|
||||
X11 библиотеки и програми заменят липсващите удебелени шрифтове чрез
|
||||
отместване на нормалните, а други изобщо не разпознават удебелена тежест,
|
||||
ако такава липсва в най-малкия размер на шрифта.
|
||||
|
||||
За да актуализирате fonts.dir в ДИРЕКТОРИЯ след (де)инсталация, изпълнете:
|
||||
|
||||
# make fontdir
|
||||
|
||||
Конфигурационния файл, изброяващ директориите за шрифтове, трябва да включва
|
||||
ДИРЕКТОРИЯ. За да се обнови списъка от шрифтове може да се наложи рестарт на
|
||||
X11 сървъра.
|
||||
|
||||
По подразбиране се инсталира само уникод (ISO10646-1) шрифта. За инсталиране
|
||||
на останалите кодови страници:
|
||||
|
||||
$ make -j8 pcf-8bit
|
||||
# make install-pcf-8bit
|
||||
|
||||
|
||||
3.2. Забележки.
|
||||
|
||||
ISO8859-1 и ISO8859-9 шрифтовете съдържат Windows Western символите и могат
|
||||
да бъдат използвани съответно като Windows-1252 и Windows-1254.
|
||||
|
||||
--
|
||||
|
||||
4. Microsoft Windows.
|
||||
|
||||
- тежести нормален, удебелен
|
||||
- кодировки Windows-1252, 1250, 1253, 1254, 1251 and 1257
|
||||
- формат Font File Format версия 2.0, компилиран във FON
|
||||
|
||||
|
||||
4.1. Инстанационен пакет.
|
||||
|
||||
Уверете се, че към шрифта не са прилагани корекции за варианти (т.1.4).
|
||||
|
||||
> cd win32
|
||||
> build
|
||||
|
||||
Бъдете търпеливи, процеса може да отнеме няколко минути.
|
||||
След това отворете terminus.nsi и го компилирайте.
|
||||
|
||||
|
||||
4.2. Само файл с шрифта.
|
||||
|
||||
> copy *.bdf win32
|
||||
> cd win32
|
||||
> make -j8
|
||||
|
||||
Можете са инсталирате terminus.fon по стандартните начини.
|
||||
|
||||
|
||||
4.3. Забележки.
|
||||
|
||||
Кодовите страници за Windows съдържат общо 384 символа. Всички останали
|
||||
символи (математика, превдографика и т.н.) засега не са достъпни.
|
||||
|
||||
--
|
||||
|
||||
5. Често задавани въпроси.
|
||||
|
||||
В. Наклонена версия?
|
||||
|
||||
О. Не. Качеството е доста по-ниско, а и запазването ширината на символите
|
||||
изисква припокриване, което не се обработва много добре от X11/Xft. Ако Ви
|
||||
е много необходима, пробвайте mkitalic от FreeBSD или bdfslant от Debian.
|
||||
|
||||
В. Мащабируема версия?
|
||||
|
||||
О. Вероятно не. Шрифта използва мого хоризонтални и вертикални линии, които
|
||||
са подходящш ра растерна графика, но не толкова за векторна. Може би
|
||||
растерен шрифт, комплектован като TrueType.
|
||||
|
||||
В. Какво ще кажете за някои нови символи?
|
||||
|
||||
О. Пишете ми и имайте готовност да помогнете.
|
||||
|
||||
В. Удебеленият 6x12 шрифт...
|
||||
|
||||
О. ...не съществува, в матрица 6x12 няма достатъчно място за добър удебелен
|
||||
шрифт. Всъщност "нормалният" шрифт е някъде по средата.
|
||||
|
||||
В. Шрифтът работи с X11/Motif, но не и с GNOME/KDE/Xfce.
|
||||
|
||||
О. Опитайте да добавите 75-yes-terminus.conf към конфигурационните файлове
|
||||
на Fontconfig. За някои версии на Fontconfig, може да се наложи да замените
|
||||
текста "Terminus" във файла с "xos4 Terminus", макар че е слабо вероятно.
|
||||
Вижте също mkfontscale(1), mkfontdir(1), fc-cache(1), xorg.conf(5), xfs(1),
|
||||
xlsfonts(1), fonts-conf(5) и т.н.
|
||||
|
||||
В. Моя терминален емулатор не извежда кирилица/псевдографика/...
|
||||
О. Ако имате инсталирани 8-битовите кодови страници за X11, и емулатора
|
||||
използва "XLFD" имена на шрифтовете, проверете дали името на завършва на
|
||||
"-10616-1" вместо "-*-*".
|
||||
|
||||
--
|
||||
|
||||
6. Правна информация.
|
||||
|
||||
|
||||
6.1. Лицензи.
|
||||
|
||||
Terminus Font е лицензизан под SIL Open Font License, версия 1.1.
|
||||
Лицензът е включен като OFL.TXT, и е достъпен заедно с FAQ на адрес:
|
||||
http://scripts.sil.org/OFL
|
||||
|
||||
Шрифтът включва два варианта на юникод обхвата 2800-28FF, но по никакъв
|
||||
начин не поддържа Брайловата азбука.
|
||||
|
||||
Конфигурационните файлове, както и изходния код на python и javascript, се
|
||||
разпространяват под GNU General Public License версия 2.0 или (по Ваше
|
||||
усмотрение) която и да е по-късна версия.
|
||||
|
||||
|
||||
6.2. Авторство.
|
||||
|
||||
Terminus Font 4.48, Copyright (C) 2019 Димитър Тошков Жеков.
|
||||
Адрес за кореспонденция <dimitar.zhekov@gmail.com>
|
||||
|
||||
Благодаря на Антон Зиновиев, Тим Алън, Кир Колышкин, Антониос Галанопулос и
|
||||
всички останали, които помогнаха.
|
3304
alt/ao2.diff
Normal file
3304
alt/ao2.diff
Normal file
File diff suppressed because it is too large
Load Diff
96349
alt/br1.diff
Normal file
96349
alt/br1.diff
Normal file
File diff suppressed because it is too large
Load Diff
860
alt/dv1.diff
Normal file
860
alt/dv1.diff
Normal file
@ -0,0 +1,860 @@
|
||||
--- ./ter-u12b.bdf.orig 2019-07-28 21:07:36.104588100 +0300
|
||||
+++ ./ter-u12b.bdf 2019-07-28 21:07:45.090203900 +0300
|
||||
@@ -10030,3 +10030,2 @@
|
||||
-E0
|
||||
-90
|
||||
-90
|
||||
+00
|
||||
+00
|
||||
@@ -10034,0 +10034 @@
|
||||
+F0
|
||||
@@ -10070,8 +10070,8 @@
|
||||
-78
|
||||
-88
|
||||
-88
|
||||
-88
|
||||
-88
|
||||
-78
|
||||
-08
|
||||
-70
|
||||
+38
|
||||
+48
|
||||
+48
|
||||
+48
|
||||
+48
|
||||
+FC
|
||||
+84
|
||||
+00
|
||||
--- ./ter-u12n.bdf.orig 2019-07-28 21:07:35.995388000 +0300
|
||||
+++ ./ter-u12n.bdf 2019-07-28 21:07:45.012203800 +0300
|
||||
@@ -10030,3 +10030,2 @@
|
||||
-E0
|
||||
-90
|
||||
-90
|
||||
+00
|
||||
+00
|
||||
@@ -10034,0 +10034 @@
|
||||
+F0
|
||||
@@ -10070,8 +10070,8 @@
|
||||
-78
|
||||
-88
|
||||
-88
|
||||
-88
|
||||
-88
|
||||
-78
|
||||
-08
|
||||
-70
|
||||
+38
|
||||
+48
|
||||
+48
|
||||
+48
|
||||
+48
|
||||
+FC
|
||||
+84
|
||||
+00
|
||||
--- ./ter-u14b.bdf.orig 2019-07-28 21:07:36.322988500 +0300
|
||||
+++ ./ter-u14b.bdf 2019-07-28 21:07:45.293004300 +0300
|
||||
@@ -11082,4 +11082,3 @@
|
||||
-78
|
||||
-CC
|
||||
-CC
|
||||
-C8
|
||||
+00
|
||||
+00
|
||||
+00
|
||||
@@ -11088,0 +11088 @@
|
||||
+FC
|
||||
@@ -11127,9 +11127,9 @@
|
||||
-7E
|
||||
-C6
|
||||
-C6
|
||||
-C6
|
||||
-C6
|
||||
-C6
|
||||
-7E
|
||||
-06
|
||||
-7C
|
||||
+3E
|
||||
+66
|
||||
+66
|
||||
+66
|
||||
+66
|
||||
+66
|
||||
+FF
|
||||
+C3
|
||||
+00
|
||||
--- ./ter-u14n.bdf.orig 2019-07-28 21:07:36.213788300 +0300
|
||||
+++ ./ter-u14n.bdf 2019-07-28 21:07:45.199404100 +0300
|
||||
@@ -11082,4 +11082,3 @@
|
||||
-38
|
||||
-44
|
||||
-44
|
||||
-48
|
||||
+00
|
||||
+00
|
||||
+00
|
||||
@@ -11088,0 +11088 @@
|
||||
+7C
|
||||
@@ -11127,8 +11126,0 @@
|
||||
-3E
|
||||
-42
|
||||
-42
|
||||
-42
|
||||
-42
|
||||
-42
|
||||
-3E
|
||||
-02
|
||||
@@ -11135,0 +11128,8 @@
|
||||
+44
|
||||
+44
|
||||
+44
|
||||
+44
|
||||
+44
|
||||
+FE
|
||||
+82
|
||||
+00
|
||||
--- ./ter-u14v.bdf.orig 2019-07-28 21:07:36.416588700 +0300
|
||||
+++ ./ter-u14v.bdf 2019-07-28 21:07:45.386604400 +0300
|
||||
@@ -11082,4 +11082,3 @@
|
||||
-78
|
||||
-CC
|
||||
-CC
|
||||
-C8
|
||||
+00
|
||||
+00
|
||||
+00
|
||||
@@ -11088,0 +11088 @@
|
||||
+FC
|
||||
@@ -11127,9 +11127,9 @@
|
||||
-7E
|
||||
-C6
|
||||
-C6
|
||||
-C6
|
||||
-C6
|
||||
-C6
|
||||
-7E
|
||||
-06
|
||||
-7C
|
||||
+3E
|
||||
+66
|
||||
+66
|
||||
+66
|
||||
+66
|
||||
+66
|
||||
+FF
|
||||
+C3
|
||||
+00
|
||||
--- ./ter-u16b.bdf.orig 2019-07-28 21:07:36.634989100 +0300
|
||||
+++ ./ter-u16b.bdf 2019-07-28 21:07:45.605004800 +0300
|
||||
@@ -12134,4 +12134,3 @@
|
||||
-78
|
||||
-CC
|
||||
-CC
|
||||
-C8
|
||||
+00
|
||||
+00
|
||||
+00
|
||||
@@ -12140,0 +12140 @@
|
||||
+FC
|
||||
@@ -12183,10 +12183,10 @@
|
||||
-7E
|
||||
-C6
|
||||
-C6
|
||||
-C6
|
||||
-C6
|
||||
-C6
|
||||
-7E
|
||||
-06
|
||||
-06
|
||||
-7C
|
||||
+3E
|
||||
+66
|
||||
+66
|
||||
+66
|
||||
+66
|
||||
+66
|
||||
+FF
|
||||
+C3
|
||||
+00
|
||||
+00
|
||||
--- ./ter-u16n.bdf.orig 2019-07-28 21:07:36.541388900 +0300
|
||||
+++ ./ter-u16n.bdf 2019-07-28 21:07:45.495804600 +0300
|
||||
@@ -12134,4 +12134,3 @@
|
||||
-38
|
||||
-44
|
||||
-44
|
||||
-48
|
||||
+00
|
||||
+00
|
||||
+00
|
||||
@@ -12140,0 +12140 @@
|
||||
+7C
|
||||
@@ -12183,9 +12182,0 @@
|
||||
-3E
|
||||
-42
|
||||
-42
|
||||
-42
|
||||
-42
|
||||
-42
|
||||
-3E
|
||||
-02
|
||||
-02
|
||||
@@ -12192,0 +12184,9 @@
|
||||
+44
|
||||
+44
|
||||
+44
|
||||
+44
|
||||
+44
|
||||
+FE
|
||||
+82
|
||||
+00
|
||||
+00
|
||||
--- ./ter-u16v.bdf.orig 2019-07-28 21:07:36.759789300 +0300
|
||||
+++ ./ter-u16v.bdf 2019-07-28 21:07:45.698605000 +0300
|
||||
@@ -12134,4 +12134,3 @@
|
||||
-78
|
||||
-CC
|
||||
-CC
|
||||
-C8
|
||||
+00
|
||||
+00
|
||||
+00
|
||||
@@ -12140,0 +12140 @@
|
||||
+FC
|
||||
@@ -12183,10 +12183,10 @@
|
||||
-7E
|
||||
-C6
|
||||
-C6
|
||||
-C6
|
||||
-C6
|
||||
-C6
|
||||
-7E
|
||||
-06
|
||||
-06
|
||||
-7C
|
||||
+3E
|
||||
+66
|
||||
+66
|
||||
+66
|
||||
+66
|
||||
+66
|
||||
+FF
|
||||
+C3
|
||||
+00
|
||||
+00
|
||||
--- ./ter-u18b.bdf.orig 2019-07-28 21:07:36.993789700 +0300
|
||||
+++ ./ter-u18b.bdf 2019-07-28 21:07:45.948205400 +0300
|
||||
@@ -13187,5 +13187,3 @@
|
||||
-3E00
|
||||
-6300
|
||||
-6300
|
||||
-6300
|
||||
-6200
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
@@ -13195,0 +13194,2 @@
|
||||
+7F00
|
||||
+6180
|
||||
@@ -13240,12 +13240,12 @@
|
||||
-3F80
|
||||
-6180
|
||||
-6180
|
||||
-6180
|
||||
-6180
|
||||
-6180
|
||||
-6180
|
||||
-6180
|
||||
-3F80
|
||||
-0180
|
||||
-0180
|
||||
-3F00
|
||||
+1F00
|
||||
+3300
|
||||
+6300
|
||||
+6300
|
||||
+6300
|
||||
+6300
|
||||
+6300
|
||||
+6300
|
||||
+FF80
|
||||
+C180
|
||||
+C180
|
||||
+0000
|
||||
--- ./ter-u18n.bdf.orig 2019-07-28 21:07:36.884589500 +0300
|
||||
+++ ./ter-u18n.bdf 2019-07-28 21:07:45.823405200 +0300
|
||||
@@ -13187,5 +13187,3 @@
|
||||
-3C00
|
||||
-4200
|
||||
-4200
|
||||
-4200
|
||||
-4400
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
@@ -13195,0 +13194,2 @@
|
||||
+7E00
|
||||
+4100
|
||||
@@ -13240,12 +13240,12 @@
|
||||
-3F00
|
||||
-4100
|
||||
-4100
|
||||
-4100
|
||||
-4100
|
||||
-4100
|
||||
-4100
|
||||
-4100
|
||||
-3F00
|
||||
-0100
|
||||
-0100
|
||||
-3E00
|
||||
+0F00
|
||||
+1100
|
||||
+2100
|
||||
+2100
|
||||
+2100
|
||||
+2100
|
||||
+2100
|
||||
+2100
|
||||
+7F80
|
||||
+4080
|
||||
+4080
|
||||
+0000
|
||||
--- ./ter-u20b.bdf.orig 2019-07-28 21:07:37.290190200 +0300
|
||||
+++ ./ter-u20b.bdf 2019-07-28 21:07:46.166605800 +0300
|
||||
@@ -14239,5 +14239,4 @@
|
||||
-3E00
|
||||
-6300
|
||||
-6300
|
||||
-6300
|
||||
-6200
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
@@ -14247,0 +14247 @@
|
||||
+7F00
|
||||
@@ -14297,12 +14297,12 @@
|
||||
-3F80
|
||||
-6180
|
||||
-6180
|
||||
-6180
|
||||
-6180
|
||||
-6180
|
||||
-6180
|
||||
-6180
|
||||
-3F80
|
||||
-0180
|
||||
-0180
|
||||
-3F00
|
||||
+1F00
|
||||
+3300
|
||||
+6300
|
||||
+6300
|
||||
+6300
|
||||
+6300
|
||||
+6300
|
||||
+6300
|
||||
+FF80
|
||||
+C180
|
||||
+C180
|
||||
+0000
|
||||
--- ./ter-u20n.bdf.orig 2019-07-28 21:07:37.102989900 +0300
|
||||
+++ ./ter-u20n.bdf 2019-07-28 21:07:46.057405600 +0300
|
||||
@@ -14239,5 +14239,4 @@
|
||||
-3C00
|
||||
-4200
|
||||
-4200
|
||||
-4200
|
||||
-4400
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
@@ -14247,0 +14247 @@
|
||||
+7E00
|
||||
@@ -14297,12 +14297,12 @@
|
||||
-3F00
|
||||
-4100
|
||||
-4100
|
||||
-4100
|
||||
-4100
|
||||
-4100
|
||||
-4100
|
||||
-4100
|
||||
-3F00
|
||||
-0100
|
||||
-0100
|
||||
-3E00
|
||||
+0F00
|
||||
+1100
|
||||
+2100
|
||||
+2100
|
||||
+2100
|
||||
+2100
|
||||
+2100
|
||||
+2100
|
||||
+7F80
|
||||
+4080
|
||||
+4080
|
||||
+0000
|
||||
--- ./ter-u22b.bdf.orig 2019-07-28 21:07:37.524190600 +0300
|
||||
+++ ./ter-u22b.bdf 2019-07-28 21:07:46.400606200 +0300
|
||||
@@ -15291,8 +15291,5 @@
|
||||
-3E00
|
||||
-6300
|
||||
-6180
|
||||
-6180
|
||||
-6180
|
||||
-6300
|
||||
-7F00
|
||||
-6180
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+7F80
|
||||
@@ -15301,0 +15299 @@
|
||||
+7F80
|
||||
@@ -15303,2 +15301,4 @@
|
||||
-6180
|
||||
-7F00
|
||||
+60C0
|
||||
+60C0
|
||||
+60C0
|
||||
+7F80
|
||||
@@ -15353,14 +15353,14 @@
|
||||
-1FC0
|
||||
-30C0
|
||||
-60C0
|
||||
-60C0
|
||||
-60C0
|
||||
-60C0
|
||||
-60C0
|
||||
-60C0
|
||||
-30C0
|
||||
-1FC0
|
||||
-00C0
|
||||
-00C0
|
||||
-0180
|
||||
-3F00
|
||||
+1F80
|
||||
+3180
|
||||
+6180
|
||||
+6180
|
||||
+6180
|
||||
+6180
|
||||
+6180
|
||||
+6180
|
||||
+6180
|
||||
+FFC0
|
||||
+C0C0
|
||||
+C0C0
|
||||
+0000
|
||||
+0000
|
||||
--- ./ter-u22n.bdf.orig 2019-07-28 21:07:37.414990400 +0300
|
||||
+++ ./ter-u22n.bdf 2019-07-28 21:07:46.291406000 +0300
|
||||
@@ -15291,8 +15291,6 @@
|
||||
-3C00
|
||||
-4200
|
||||
-4100
|
||||
-4100
|
||||
-4100
|
||||
-4200
|
||||
-7E00
|
||||
-4100
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+7F00
|
||||
+4080
|
||||
@@ -15300,0 +15299 @@
|
||||
+7F00
|
||||
@@ -15303,2 +15302,3 @@
|
||||
-4100
|
||||
-7E00
|
||||
+4080
|
||||
+4080
|
||||
+7F00
|
||||
@@ -15353 +15353,4 @@
|
||||
-1F80
|
||||
+0F80
|
||||
+1080
|
||||
+2080
|
||||
+2080
|
||||
@@ -15355,6 +15357,0 @@
|
||||
-4080
|
||||
-4080
|
||||
-4080
|
||||
-4080
|
||||
-4080
|
||||
-4080
|
||||
@@ -15362,5 +15359,8 @@
|
||||
-1F80
|
||||
-0080
|
||||
-0080
|
||||
-0100
|
||||
-3E00
|
||||
+2080
|
||||
+2080
|
||||
+2080
|
||||
+7FC0
|
||||
+4040
|
||||
+4040
|
||||
+0000
|
||||
+0000
|
||||
--- ./ter-u24b.bdf.orig 2019-07-28 21:07:37.773791100 +0300
|
||||
+++ ./ter-u24b.bdf 2019-07-28 21:07:46.634606600 +0300
|
||||
@@ -16344,2 +16344,5 @@
|
||||
-3F00
|
||||
-6180
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+7F80
|
||||
@@ -16349,2 +16351,0 @@
|
||||
-6180
|
||||
-7F80
|
||||
@@ -16351,0 +16353 @@
|
||||
+7FC0
|
||||
@@ -16356,3 +16358 @@
|
||||
-6060
|
||||
-60C0
|
||||
-7F80
|
||||
+7FC0
|
||||
@@ -16410,7 +16410,11 @@
|
||||
-1FE0
|
||||
-3060
|
||||
-6060
|
||||
-6060
|
||||
-6060
|
||||
-6060
|
||||
-6060
|
||||
+0FC0
|
||||
+18C0
|
||||
+30C0
|
||||
+30C0
|
||||
+30C0
|
||||
+30C0
|
||||
+30C0
|
||||
+30C0
|
||||
+30C0
|
||||
+30C0
|
||||
+7FE0
|
||||
@@ -16419,6 +16423,2 @@
|
||||
-30E0
|
||||
-1FE0
|
||||
-0060
|
||||
-0060
|
||||
-00C0
|
||||
-3F80
|
||||
+0000
|
||||
+0000
|
||||
--- ./ter-u24n.bdf.orig 2019-07-28 21:07:37.648990900 +0300
|
||||
+++ ./ter-u24n.bdf 2019-07-28 21:07:46.525406400 +0300
|
||||
@@ -16344,2 +16344,5 @@
|
||||
-3E00
|
||||
-4100
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+7F00
|
||||
@@ -16349,2 +16351,0 @@
|
||||
-4100
|
||||
-7F00
|
||||
@@ -16351,0 +16353 @@
|
||||
+7F80
|
||||
@@ -16356,3 +16358 @@
|
||||
-4040
|
||||
-4080
|
||||
-7F00
|
||||
+7F80
|
||||
@@ -16410,7 +16410,11 @@
|
||||
-1FC0
|
||||
-2040
|
||||
-4040
|
||||
-4040
|
||||
-4040
|
||||
-4040
|
||||
-4040
|
||||
+0F80
|
||||
+1080
|
||||
+2080
|
||||
+2080
|
||||
+2080
|
||||
+2080
|
||||
+2080
|
||||
+2080
|
||||
+2080
|
||||
+2080
|
||||
+7FC0
|
||||
@@ -16419,6 +16423,2 @@
|
||||
-20C0
|
||||
-1F40
|
||||
-0040
|
||||
-0040
|
||||
-0080
|
||||
-3F00
|
||||
+0000
|
||||
+0000
|
||||
--- ./ter-u28b.bdf.orig 2019-07-28 21:07:38.038991500 +0300
|
||||
+++ ./ter-u28b.bdf 2019-07-28 21:07:46.915407100 +0300
|
||||
@@ -18448 +18448,5 @@
|
||||
-3F00
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
@@ -18450,5 +18453,0 @@
|
||||
-61C0
|
||||
-60C0
|
||||
-60C0
|
||||
-60C0
|
||||
-6180
|
||||
@@ -18456,4 +18455,6 @@
|
||||
-7FE0
|
||||
-6070
|
||||
-6030
|
||||
-6030
|
||||
+6060
|
||||
+6060
|
||||
+6060
|
||||
+7FC0
|
||||
+7FC0
|
||||
+6060
|
||||
@@ -18463 +18463,0 @@
|
||||
-6070
|
||||
@@ -18523 +18523,11 @@
|
||||
-1FF0
|
||||
+07F0
|
||||
+0FF0
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
@@ -18525,16 +18535,6 @@
|
||||
-7030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-7030
|
||||
-3FF0
|
||||
-1FF0
|
||||
-0030
|
||||
-0030
|
||||
-0070
|
||||
-3FE0
|
||||
-3FC0
|
||||
+7FF8
|
||||
+6018
|
||||
+6018
|
||||
+6018
|
||||
+0000
|
||||
+0000
|
||||
--- ./ter-u28n.bdf.orig 2019-07-28 21:07:37.914191300 +0300
|
||||
+++ ./ter-u28n.bdf 2019-07-28 21:07:46.775006900 +0300
|
||||
@@ -18448,4 +18448,6 @@
|
||||
-3F00
|
||||
-6180
|
||||
-60C0
|
||||
-60C0
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+7F80
|
||||
@@ -18452,0 +18455,3 @@
|
||||
+6060
|
||||
+6060
|
||||
+6060
|
||||
@@ -18454 +18458,0 @@
|
||||
-6180
|
||||
@@ -18460,4 +18463,0 @@
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
@@ -18523,18 +18523,18 @@
|
||||
-1FF0
|
||||
-3030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-3030
|
||||
-1FF0
|
||||
-0030
|
||||
-0030
|
||||
-0030
|
||||
-0060
|
||||
-3FC0
|
||||
+07F0
|
||||
+0C30
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+7FF8
|
||||
+6018
|
||||
+6018
|
||||
+6018
|
||||
+0000
|
||||
+0000
|
||||
--- ./ter-u32b.bdf.orig 2019-07-28 21:07:38.335392100 +0300
|
||||
+++ ./ter-u32b.bdf 2019-07-28 21:07:47.289807800 +0300
|
||||
@@ -20554,8 +20554,6 @@
|
||||
-3FC0
|
||||
-7FE0
|
||||
-70F0
|
||||
-7070
|
||||
-7070
|
||||
-7070
|
||||
-7070
|
||||
-70E0
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
@@ -20563,0 +20562 @@
|
||||
+7078
|
||||
@@ -20565,4 +20564,5 @@
|
||||
-701C
|
||||
-701C
|
||||
-701C
|
||||
-701C
|
||||
+7038
|
||||
+7038
|
||||
+7FF0
|
||||
+7FF8
|
||||
+703C
|
||||
@@ -20638 +20638,12 @@
|
||||
-1FFC
|
||||
+07FC
|
||||
+0FFC
|
||||
+1E1C
|
||||
+1C1C
|
||||
+1C1C
|
||||
+1C1C
|
||||
+1C1C
|
||||
+1C1C
|
||||
+1C1C
|
||||
+1C1C
|
||||
+1C1C
|
||||
+1C1C
|
||||
@@ -20640,17 +20651,6 @@
|
||||
-781C
|
||||
-701C
|
||||
-701C
|
||||
-701C
|
||||
-701C
|
||||
-701C
|
||||
-701C
|
||||
-701C
|
||||
-701C
|
||||
-781C
|
||||
-3FFC
|
||||
-1FFC
|
||||
-001C
|
||||
-001C
|
||||
-003C
|
||||
-3FF8
|
||||
-3FF0
|
||||
+7FFE
|
||||
+700E
|
||||
+700E
|
||||
+700E
|
||||
+700E
|
||||
+0000
|
||||
--- ./ter-u32n.bdf.orig 2019-07-28 21:07:38.194991800 +0300
|
||||
+++ ./ter-u32n.bdf 2019-07-28 21:07:47.149407500 +0300
|
||||
@@ -20554,8 +20554,6 @@
|
||||
-1FC0
|
||||
-3FE0
|
||||
-3070
|
||||
-3030
|
||||
-3030
|
||||
-3030
|
||||
-3030
|
||||
-3070
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
@@ -20564,0 +20563,5 @@
|
||||
+3018
|
||||
+3018
|
||||
+3038
|
||||
+3FF0
|
||||
+3FF8
|
||||
@@ -20568,3 +20570,0 @@
|
||||
-300C
|
||||
-300C
|
||||
-300C
|
||||
@@ -20638,19 +20638,19 @@
|
||||
-0FFC
|
||||
-1FFC
|
||||
-380C
|
||||
-300C
|
||||
-300C
|
||||
-300C
|
||||
-300C
|
||||
-300C
|
||||
-300C
|
||||
-300C
|
||||
-300C
|
||||
-380C
|
||||
-1FFC
|
||||
-0FFC
|
||||
-000C
|
||||
-000C
|
||||
-001C
|
||||
-1FF8
|
||||
-1FF0
|
||||
+07F8
|
||||
+0FF8
|
||||
+1C18
|
||||
+1818
|
||||
+1818
|
||||
+1818
|
||||
+1818
|
||||
+1818
|
||||
+1818
|
||||
+1818
|
||||
+1818
|
||||
+1818
|
||||
+3FF8
|
||||
+7FFC
|
||||
+600C
|
||||
+600C
|
||||
+600C
|
||||
+600C
|
||||
+0000
|
992
alt/ge2.diff
Normal file
992
alt/ge2.diff
Normal file
@ -0,0 +1,992 @@
|
||||
--- ./ter-u12b.bdf.orig 2019-07-28 21:07:36.104588100 +0300
|
||||
+++ ./ter-u12b.bdf 2019-07-28 21:07:48.054209100 +0300
|
||||
@@ -10051,4 +10051,3 @@
|
||||
-F8
|
||||
-80
|
||||
-80
|
||||
-80
|
||||
+70
|
||||
+08
|
||||
+70
|
||||
@@ -10056,0 +10056 @@
|
||||
+70
|
||||
@@ -10659,4 +10659,3 @@
|
||||
-F8
|
||||
-80
|
||||
-80
|
||||
-80
|
||||
+70
|
||||
+08
|
||||
+70
|
||||
@@ -10664,0 +10664 @@
|
||||
+70
|
||||
@@ -10998,0 +10999,3 @@
|
||||
+40
|
||||
+40
|
||||
+70
|
||||
@@ -11000,5 +11003 @@
|
||||
-08
|
||||
-F8
|
||||
-80
|
||||
-80
|
||||
-80
|
||||
+70
|
||||
@@ -11006,0 +11006 @@
|
||||
+70
|
||||
--- ./ter-u12n.bdf.orig 2019-07-28 21:07:35.995388000 +0300
|
||||
+++ ./ter-u12n.bdf 2019-07-28 21:07:47.976209000 +0300
|
||||
@@ -10051,4 +10051,3 @@
|
||||
-F8
|
||||
-80
|
||||
-80
|
||||
-80
|
||||
+70
|
||||
+08
|
||||
+70
|
||||
@@ -10056,0 +10056 @@
|
||||
+70
|
||||
@@ -10659,4 +10659,3 @@
|
||||
-F8
|
||||
-80
|
||||
-80
|
||||
-80
|
||||
+70
|
||||
+08
|
||||
+70
|
||||
@@ -10664,0 +10664 @@
|
||||
+70
|
||||
@@ -10998,0 +10999,3 @@
|
||||
+40
|
||||
+40
|
||||
+70
|
||||
@@ -11000,5 +11003 @@
|
||||
-08
|
||||
-F8
|
||||
-80
|
||||
-80
|
||||
-80
|
||||
+70
|
||||
@@ -11006,0 +11006 @@
|
||||
+70
|
||||
--- ./ter-u14b.bdf.orig 2019-07-28 21:07:36.322988500 +0300
|
||||
+++ ./ter-u14b.bdf 2019-07-28 21:07:48.257009500 +0300
|
||||
@@ -11106,5 +11106,4 @@
|
||||
-FE
|
||||
-C0
|
||||
-C0
|
||||
-C0
|
||||
-C0
|
||||
+7C
|
||||
+06
|
||||
+06
|
||||
+7C
|
||||
@@ -11112,0 +11112 @@
|
||||
+7C
|
||||
@@ -11778,5 +11778,4 @@
|
||||
-FE
|
||||
-C0
|
||||
-C0
|
||||
-C0
|
||||
-C0
|
||||
+7C
|
||||
+06
|
||||
+06
|
||||
+7C
|
||||
@@ -11784,0 +11784 @@
|
||||
+7C
|
||||
@@ -12153,0 +12154,3 @@
|
||||
+60
|
||||
+60
|
||||
+7C
|
||||
@@ -12156,5 +12159 @@
|
||||
-FE
|
||||
-C0
|
||||
-C0
|
||||
-C0
|
||||
-C0
|
||||
+7C
|
||||
@@ -12162,0 +12162 @@
|
||||
+7C
|
||||
--- ./ter-u14n.bdf.orig 2019-07-28 21:07:36.213788300 +0300
|
||||
+++ ./ter-u14n.bdf 2019-07-28 21:07:48.163409300 +0300
|
||||
@@ -11106,5 +11106,4 @@
|
||||
-7E
|
||||
-40
|
||||
-40
|
||||
-40
|
||||
-40
|
||||
+3C
|
||||
+02
|
||||
+02
|
||||
+3C
|
||||
@@ -11112,0 +11112 @@
|
||||
+3C
|
||||
@@ -11778,5 +11778,4 @@
|
||||
-7E
|
||||
-40
|
||||
-40
|
||||
-40
|
||||
-40
|
||||
+3C
|
||||
+02
|
||||
+02
|
||||
+3C
|
||||
@@ -11784,0 +11784 @@
|
||||
+3C
|
||||
@@ -12153,0 +12154,3 @@
|
||||
+20
|
||||
+20
|
||||
+3C
|
||||
@@ -12156,5 +12159 @@
|
||||
-7E
|
||||
-40
|
||||
-40
|
||||
-40
|
||||
-40
|
||||
+3C
|
||||
@@ -12162,0 +12162 @@
|
||||
+3C
|
||||
--- ./ter-u14v.bdf.orig 2019-07-28 21:07:36.416588700 +0300
|
||||
+++ ./ter-u14v.bdf 2019-07-28 21:07:48.366209700 +0300
|
||||
@@ -11106,5 +11106,4 @@
|
||||
-FE
|
||||
-C0
|
||||
-C0
|
||||
-C0
|
||||
-C0
|
||||
+7C
|
||||
+06
|
||||
+06
|
||||
+7C
|
||||
@@ -11112,0 +11112 @@
|
||||
+7C
|
||||
@@ -11778,5 +11778,4 @@
|
||||
-FE
|
||||
-C0
|
||||
-C0
|
||||
-C0
|
||||
-C0
|
||||
+7C
|
||||
+06
|
||||
+06
|
||||
+7C
|
||||
@@ -11784,0 +11784 @@
|
||||
+7C
|
||||
@@ -12153,0 +12154,3 @@
|
||||
+60
|
||||
+60
|
||||
+7C
|
||||
@@ -12156,5 +12159 @@
|
||||
-FE
|
||||
-C0
|
||||
-C0
|
||||
-C0
|
||||
-C0
|
||||
+7C
|
||||
@@ -12162,0 +12162 @@
|
||||
+7C
|
||||
--- ./ter-u16b.bdf.orig 2019-07-28 21:07:36.634989100 +0300
|
||||
+++ ./ter-u16b.bdf 2019-07-28 21:07:48.553410000 +0300
|
||||
@@ -12160,5 +12160,4 @@
|
||||
-FE
|
||||
-C0
|
||||
-C0
|
||||
-C0
|
||||
-C0
|
||||
+7C
|
||||
+06
|
||||
+06
|
||||
+7C
|
||||
@@ -12166,0 +12166 @@
|
||||
+7C
|
||||
@@ -12896,5 +12896,4 @@
|
||||
-FE
|
||||
-C0
|
||||
-C0
|
||||
-C0
|
||||
-C0
|
||||
+7C
|
||||
+06
|
||||
+06
|
||||
+7C
|
||||
@@ -12902,0 +12902 @@
|
||||
+7C
|
||||
@@ -13307,0 +13308,3 @@
|
||||
+60
|
||||
+60
|
||||
+7C
|
||||
@@ -13310,5 +13313 @@
|
||||
-FE
|
||||
-C0
|
||||
-C0
|
||||
-C0
|
||||
-C0
|
||||
+7C
|
||||
@@ -13316,0 +13316 @@
|
||||
+7C
|
||||
--- ./ter-u16n.bdf.orig 2019-07-28 21:07:36.541388900 +0300
|
||||
+++ ./ter-u16n.bdf 2019-07-28 21:07:48.459809800 +0300
|
||||
@@ -12160,5 +12160,4 @@
|
||||
-7E
|
||||
-40
|
||||
-40
|
||||
-40
|
||||
-40
|
||||
+3C
|
||||
+02
|
||||
+02
|
||||
+3C
|
||||
@@ -12166,0 +12166 @@
|
||||
+3C
|
||||
@@ -12896,5 +12896,4 @@
|
||||
-7E
|
||||
-40
|
||||
-40
|
||||
-40
|
||||
-40
|
||||
+3C
|
||||
+02
|
||||
+02
|
||||
+3C
|
||||
@@ -12902,0 +12902 @@
|
||||
+3C
|
||||
@@ -13307,0 +13308,3 @@
|
||||
+20
|
||||
+20
|
||||
+3C
|
||||
@@ -13310,5 +13313 @@
|
||||
-7E
|
||||
-40
|
||||
-40
|
||||
-40
|
||||
-40
|
||||
+3C
|
||||
@@ -13316,0 +13316 @@
|
||||
+3C
|
||||
--- ./ter-u16v.bdf.orig 2019-07-28 21:07:36.759789300 +0300
|
||||
+++ ./ter-u16v.bdf 2019-07-28 21:07:48.662610200 +0300
|
||||
@@ -12160,5 +12160,4 @@
|
||||
-FE
|
||||
-C0
|
||||
-C0
|
||||
-C0
|
||||
-C0
|
||||
+7C
|
||||
+06
|
||||
+06
|
||||
+7C
|
||||
@@ -12166,0 +12166 @@
|
||||
+7C
|
||||
@@ -12896,5 +12896,4 @@
|
||||
-FE
|
||||
-C0
|
||||
-C0
|
||||
-C0
|
||||
-C0
|
||||
+7C
|
||||
+06
|
||||
+06
|
||||
+7C
|
||||
@@ -12902,0 +12902 @@
|
||||
+7C
|
||||
@@ -13307,0 +13308,3 @@
|
||||
+60
|
||||
+60
|
||||
+7C
|
||||
@@ -13310,5 +13313 @@
|
||||
-FE
|
||||
-C0
|
||||
-C0
|
||||
-C0
|
||||
-C0
|
||||
+7C
|
||||
@@ -13316,0 +13316 @@
|
||||
+7C
|
||||
--- ./ter-u18b.bdf.orig 2019-07-28 21:07:36.993789700 +0300
|
||||
+++ ./ter-u18b.bdf 2019-07-28 21:07:48.881010600 +0300
|
||||
@@ -13215,6 +13215,5 @@
|
||||
-7F80
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
+3F00
|
||||
+0180
|
||||
+0180
|
||||
+0180
|
||||
+3F00
|
||||
@@ -13223,0 +13223 @@
|
||||
+3F00
|
||||
@@ -14015,6 +14015,5 @@
|
||||
-7F80
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
+3F00
|
||||
+0180
|
||||
+0180
|
||||
+0180
|
||||
+3F00
|
||||
@@ -14023,0 +14023 @@
|
||||
+3F00
|
||||
@@ -14462,0 +14463,3 @@
|
||||
+3000
|
||||
+3000
|
||||
+3F00
|
||||
@@ -14465,6 +14468,2 @@
|
||||
-7F80
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
+0180
|
||||
+3F00
|
||||
@@ -14473,0 +14473 @@
|
||||
+3F00
|
||||
--- ./ter-u18n.bdf.orig 2019-07-28 21:07:36.884589500 +0300
|
||||
+++ ./ter-u18n.bdf 2019-07-28 21:07:48.771810400 +0300
|
||||
@@ -13215,6 +13215,5 @@
|
||||
-7F00
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
+3E00
|
||||
+0100
|
||||
+0100
|
||||
+0100
|
||||
+3E00
|
||||
@@ -13223,0 +13223 @@
|
||||
+3E00
|
||||
@@ -14015,6 +14015,5 @@
|
||||
-7F00
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
+3E00
|
||||
+0100
|
||||
+0100
|
||||
+0100
|
||||
+3E00
|
||||
@@ -14023,0 +14023 @@
|
||||
+3E00
|
||||
@@ -14462,0 +14463,3 @@
|
||||
+2000
|
||||
+2000
|
||||
+3E00
|
||||
@@ -14465,6 +14468,2 @@
|
||||
-7F00
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
+0100
|
||||
+3E00
|
||||
@@ -14473,0 +14473 @@
|
||||
+3E00
|
||||
--- ./ter-u20b.bdf.orig 2019-07-28 21:07:37.290190200 +0300
|
||||
+++ ./ter-u20b.bdf 2019-07-28 21:07:49.115011000 +0300
|
||||
@@ -14270,6 +14270,5 @@
|
||||
-7F80
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
+3F00
|
||||
+0180
|
||||
+0180
|
||||
+0180
|
||||
+3F00
|
||||
@@ -14278,0 +14278 @@
|
||||
+3F00
|
||||
@@ -15134,6 +15134,5 @@
|
||||
-7F80
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
+3F00
|
||||
+0180
|
||||
+0180
|
||||
+0180
|
||||
+3F00
|
||||
@@ -15142,0 +15142 @@
|
||||
+3F00
|
||||
@@ -15617,0 +15618,3 @@
|
||||
+3000
|
||||
+3000
|
||||
+3F00
|
||||
@@ -15620,6 +15623,2 @@
|
||||
-7F80
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
+0180
|
||||
+3F00
|
||||
@@ -15628,0 +15628 @@
|
||||
+3F00
|
||||
--- ./ter-u20n.bdf.orig 2019-07-28 21:07:37.102989900 +0300
|
||||
+++ ./ter-u20n.bdf 2019-07-28 21:07:48.990210800 +0300
|
||||
@@ -14270,6 +14270,5 @@
|
||||
-7F00
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
+3E00
|
||||
+0100
|
||||
+0100
|
||||
+0100
|
||||
+3E00
|
||||
@@ -14278,0 +14278 @@
|
||||
+3E00
|
||||
@@ -15134,6 +15134,5 @@
|
||||
-7F00
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
+3E00
|
||||
+0100
|
||||
+0100
|
||||
+0100
|
||||
+3E00
|
||||
@@ -15142,0 +15142 @@
|
||||
+3E00
|
||||
@@ -15617,0 +15618,3 @@
|
||||
+2000
|
||||
+2000
|
||||
+3E00
|
||||
@@ -15620,6 +15623,2 @@
|
||||
-7F00
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
+0100
|
||||
+3E00
|
||||
@@ -15628,0 +15628 @@
|
||||
+3E00
|
||||
--- ./ter-u22b.bdf.orig 2019-07-28 21:07:37.524190600 +0300
|
||||
+++ ./ter-u22b.bdf 2019-07-28 21:07:49.349011400 +0300
|
||||
@@ -15324,6 +15324,5 @@
|
||||
-7FC0
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
+3F80
|
||||
+00C0
|
||||
+00C0
|
||||
+00C0
|
||||
+3F80
|
||||
@@ -15333,0 +15333 @@
|
||||
+3F80
|
||||
@@ -16252,6 +16252,5 @@
|
||||
-7FC0
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
+3F80
|
||||
+00C0
|
||||
+00C0
|
||||
+00C0
|
||||
+3F80
|
||||
@@ -16261,0 +16261 @@
|
||||
+3F80
|
||||
@@ -16770,0 +16771,4 @@
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3F80
|
||||
@@ -16774,6 +16778 @@
|
||||
-7FC0
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
+3F80
|
||||
@@ -16783,0 +16783 @@
|
||||
+3F80
|
||||
--- ./ter-u22n.bdf.orig 2019-07-28 21:07:37.414990400 +0300
|
||||
+++ ./ter-u22n.bdf 2019-07-28 21:07:49.224211200 +0300
|
||||
@@ -15324,6 +15324,5 @@
|
||||
-7F80
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
+3F00
|
||||
+0080
|
||||
+0080
|
||||
+0080
|
||||
+3F00
|
||||
@@ -15333,0 +15333 @@
|
||||
+3F00
|
||||
@@ -16252,6 +16252,5 @@
|
||||
-7F80
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
+3F00
|
||||
+0080
|
||||
+0080
|
||||
+0080
|
||||
+3F00
|
||||
@@ -16261,0 +16261 @@
|
||||
+3F00
|
||||
@@ -16770,0 +16771,4 @@
|
||||
+2000
|
||||
+2000
|
||||
+2000
|
||||
+3F00
|
||||
@@ -16774,6 +16778 @@
|
||||
-7F80
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
+3F00
|
||||
@@ -16783,0 +16783 @@
|
||||
+3F00
|
||||
--- ./ter-u24b.bdf.orig 2019-07-28 21:07:37.773791100 +0300
|
||||
+++ ./ter-u24b.bdf 2019-07-28 21:07:49.583011800 +0300
|
||||
@@ -16379,7 +16379,6 @@
|
||||
-7FE0
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
+3FC0
|
||||
+0060
|
||||
+0060
|
||||
+0060
|
||||
+0060
|
||||
+3FC0
|
||||
@@ -16389,0 +16389 @@
|
||||
+3FC0
|
||||
@@ -17371,7 +17371,6 @@
|
||||
-7FE0
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
+3FC0
|
||||
+0060
|
||||
+0060
|
||||
+0060
|
||||
+0060
|
||||
+3FC0
|
||||
@@ -17381,0 +17381 @@
|
||||
+3FC0
|
||||
@@ -17925,0 +17926,4 @@
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3FC0
|
||||
@@ -17929,7 +17933,2 @@
|
||||
-7FE0
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
+0060
|
||||
+3FC0
|
||||
@@ -17939,0 +17939 @@
|
||||
+3FC0
|
||||
--- ./ter-u24n.bdf.orig 2019-07-28 21:07:37.648990900 +0300
|
||||
+++ ./ter-u24n.bdf 2019-07-28 21:07:49.458211600 +0300
|
||||
@@ -16379,7 +16379,6 @@
|
||||
-7FC0
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
+3F80
|
||||
+0040
|
||||
+0040
|
||||
+0040
|
||||
+0040
|
||||
+3F80
|
||||
@@ -16389,0 +16389 @@
|
||||
+3F80
|
||||
@@ -17371,7 +17371,6 @@
|
||||
-7FC0
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
+3F80
|
||||
+0040
|
||||
+0040
|
||||
+0040
|
||||
+0040
|
||||
+3F80
|
||||
@@ -17381,0 +17381 @@
|
||||
+3F80
|
||||
@@ -17925,0 +17926,4 @@
|
||||
+2000
|
||||
+2000
|
||||
+2000
|
||||
+3F80
|
||||
@@ -17929,7 +17933,2 @@
|
||||
-7FC0
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
-4000
|
||||
+0040
|
||||
+3F80
|
||||
@@ -17939,0 +17939 @@
|
||||
+3F80
|
||||
--- ./ter-u28b.bdf.orig 2019-07-28 21:07:38.038991500 +0300
|
||||
+++ ./ter-u28b.bdf 2019-07-28 21:07:49.863812300 +0300
|
||||
@@ -18488,11 +18488,8 @@
|
||||
-7FF0
|
||||
-7FF0
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
+3FC0
|
||||
+3FE0
|
||||
+0070
|
||||
+0030
|
||||
+0030
|
||||
+1FE0
|
||||
+3FC0
|
||||
+7000
|
||||
@@ -18500,0 +18498,3 @@
|
||||
+7000
|
||||
+3FE0
|
||||
+1FE0
|
||||
@@ -19608,11 +19608,8 @@
|
||||
-7FF0
|
||||
-7FF0
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
+3FC0
|
||||
+3FE0
|
||||
+0070
|
||||
+0030
|
||||
+0030
|
||||
+1FE0
|
||||
+3FC0
|
||||
+7000
|
||||
@@ -19620,0 +19618,3 @@
|
||||
+7000
|
||||
+3FE0
|
||||
+1FE0
|
||||
@@ -20234,0 +20235,6 @@
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3FC0
|
||||
+3FE0
|
||||
+0070
|
||||
@@ -20237,12 +20243,3 @@
|
||||
-0030
|
||||
-7FF0
|
||||
-7FF0
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
+1FE0
|
||||
+3FC0
|
||||
+7000
|
||||
@@ -20250,0 +20248,3 @@
|
||||
+7000
|
||||
+3FE0
|
||||
+1FE0
|
||||
--- ./ter-u28n.bdf.orig 2019-07-28 21:07:37.914191300 +0300
|
||||
+++ ./ter-u28n.bdf 2019-07-28 21:07:49.723412100 +0300
|
||||
@@ -18488,10 +18488,8 @@
|
||||
-7FF0
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
+3FC0
|
||||
+0060
|
||||
+0030
|
||||
+0030
|
||||
+0030
|
||||
+0060
|
||||
+1FC0
|
||||
+3000
|
||||
@@ -18500,0 +18499,2 @@
|
||||
+3000
|
||||
+1FE0
|
||||
@@ -19608,10 +19608,8 @@
|
||||
-7FF0
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
+3FC0
|
||||
+0060
|
||||
+0030
|
||||
+0030
|
||||
+0030
|
||||
+0060
|
||||
+1FC0
|
||||
+3000
|
||||
@@ -19620,0 +19619,2 @@
|
||||
+3000
|
||||
+1FE0
|
||||
@@ -20234,0 +20235,5 @@
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3FC0
|
||||
+0060
|
||||
@@ -20238,10 +20243,3 @@
|
||||
-7FF0
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
-6000
|
||||
+0060
|
||||
+1FC0
|
||||
+3000
|
||||
@@ -20250,0 +20249,2 @@
|
||||
+3000
|
||||
+1FE0
|
||||
--- ./ter-u32b.bdf.orig 2019-07-28 21:07:38.335392100 +0300
|
||||
+++ ./ter-u32b.bdf 2019-07-28 21:07:50.160212800 +0300
|
||||
@@ -20599,12 +20599,9 @@
|
||||
-7FFC
|
||||
-7FFC
|
||||
-7000
|
||||
-7000
|
||||
-7000
|
||||
-7000
|
||||
-7000
|
||||
-7000
|
||||
-7000
|
||||
-7000
|
||||
-7000
|
||||
-7000
|
||||
+3FF0
|
||||
+3FF8
|
||||
+003C
|
||||
+001C
|
||||
+001C
|
||||
+003C
|
||||
+1FF8
|
||||
+3FF0
|
||||
+7800
|
||||
@@ -20612,0 +20610,3 @@
|
||||
+7800
|
||||
+3FF8
|
||||
+1FF8
|
||||
@@ -21847,12 +21847,9 @@
|
||||
-7FFC
|
||||
-7FFC
|
||||
-7000
|
||||
-7000
|
||||
-7000
|
||||
-7000
|
||||
-7000
|
||||
-7000
|
||||
-7000
|
||||
-7000
|
||||
-7000
|
||||
-7000
|
||||
+3FF0
|
||||
+3FF8
|
||||
+003C
|
||||
+001C
|
||||
+001C
|
||||
+003C
|
||||
+1FF8
|
||||
+3FF0
|
||||
+7800
|
||||
@@ -21860,0 +21858,3 @@
|
||||
+7800
|
||||
+3FF8
|
||||
+1FF8
|
||||
@@ -22544,0 +22545,7 @@
|
||||
+3800
|
||||
+3800
|
||||
+3800
|
||||
+3800
|
||||
+3FF0
|
||||
+3FF8
|
||||
+003C
|
||||
@@ -22547,14 +22554,4 @@
|
||||
-001C
|
||||
-001C
|
||||
-7FFC
|
||||
-7FFC
|
||||
-7000
|
||||
-7000
|
||||
-7000
|
||||
-7000
|
||||
-7000
|
||||
-7000
|
||||
-7000
|
||||
-7000
|
||||
-7000
|
||||
-7000
|
||||
+003C
|
||||
+1FF8
|
||||
+3FF0
|
||||
+7800
|
||||
@@ -22562,0 +22560,3 @@
|
||||
+7800
|
||||
+3FF8
|
||||
+1FF8
|
||||
--- ./ter-u32n.bdf.orig 2019-07-28 21:07:38.194991800 +0300
|
||||
+++ ./ter-u32n.bdf 2019-07-28 21:07:50.004212600 +0300
|
||||
@@ -20599,12 +20599,9 @@
|
||||
-3FFC
|
||||
-3FFC
|
||||
-3000
|
||||
-3000
|
||||
-3000
|
||||
-3000
|
||||
-3000
|
||||
-3000
|
||||
-3000
|
||||
-3000
|
||||
-3000
|
||||
-3000
|
||||
+1FF0
|
||||
+1FF8
|
||||
+001C
|
||||
+000C
|
||||
+000C
|
||||
+001C
|
||||
+0FF8
|
||||
+1FF0
|
||||
+3800
|
||||
@@ -20612,0 +20610,3 @@
|
||||
+3800
|
||||
+1FF8
|
||||
+0FF8
|
||||
@@ -21847,12 +21847,9 @@
|
||||
-3FFC
|
||||
-3FFC
|
||||
-3000
|
||||
-3000
|
||||
-3000
|
||||
-3000
|
||||
-3000
|
||||
-3000
|
||||
-3000
|
||||
-3000
|
||||
-3000
|
||||
-3000
|
||||
+1FF0
|
||||
+1FF8
|
||||
+001C
|
||||
+000C
|
||||
+000C
|
||||
+001C
|
||||
+0FF8
|
||||
+1FF0
|
||||
+3800
|
||||
@@ -21860,0 +21858,3 @@
|
||||
+3800
|
||||
+1FF8
|
||||
+0FF8
|
||||
@@ -22544,0 +22545,7 @@
|
||||
+1800
|
||||
+1800
|
||||
+1800
|
||||
+1800
|
||||
+1FF0
|
||||
+1FF8
|
||||
+001C
|
||||
@@ -22547,14 +22554,4 @@
|
||||
-000C
|
||||
-000C
|
||||
-3FFC
|
||||
-3FFC
|
||||
-3000
|
||||
-3000
|
||||
-3000
|
||||
-3000
|
||||
-3000
|
||||
-3000
|
||||
-3000
|
||||
-3000
|
||||
-3000
|
||||
-3000
|
||||
+001C
|
||||
+0FF8
|
||||
+1FF0
|
||||
+3800
|
||||
@@ -22562,0 +22560,3 @@
|
||||
+3800
|
||||
+1FF8
|
||||
+0FF8
|
304
alt/gq2.diff
Normal file
304
alt/gq2.diff
Normal file
@ -0,0 +1,304 @@
|
||||
--- ./ter-u12b.bdf.orig 2019-07-28 21:07:36.104588100 +0300
|
||||
+++ ./ter-u12b.bdf 2019-07-28 21:07:50.940214200 +0300
|
||||
@@ -189 +189 @@
|
||||
-20
|
||||
+40
|
||||
@@ -1269,3 +1268,0 @@
|
||||
-40
|
||||
-20
|
||||
-00
|
||||
@@ -1272,0 +1270,3 @@
|
||||
+20
|
||||
+20
|
||||
+10
|
||||
--- ./ter-u12n.bdf.orig 2019-07-28 21:07:35.995388000 +0300
|
||||
+++ ./ter-u12n.bdf 2019-07-28 21:07:50.846614000 +0300
|
||||
@@ -189 +189 @@
|
||||
-20
|
||||
+40
|
||||
@@ -1269,3 +1268,0 @@
|
||||
-40
|
||||
-20
|
||||
-00
|
||||
@@ -1272,0 +1270,3 @@
|
||||
+20
|
||||
+20
|
||||
+10
|
||||
--- ./ter-u14b.bdf.orig 2019-07-28 21:07:36.322988500 +0300
|
||||
+++ ./ter-u14b.bdf 2019-07-28 21:07:51.158614600 +0300
|
||||
@@ -205 +205 @@
|
||||
-18
|
||||
+30
|
||||
@@ -1398,0 +1399,2 @@
|
||||
+00
|
||||
+30
|
||||
@@ -1401,2 +1402,0 @@
|
||||
-00
|
||||
-00
|
||||
--- ./ter-u14n.bdf.orig 2019-07-28 21:07:36.213788300 +0300
|
||||
+++ ./ter-u14n.bdf 2019-07-28 21:07:51.049414400 +0300
|
||||
@@ -203,2 +203,2 @@
|
||||
-10
|
||||
-10
|
||||
+08
|
||||
+08
|
||||
@@ -1398,0 +1399,2 @@
|
||||
+00
|
||||
+10
|
||||
@@ -1401,2 +1402,0 @@
|
||||
-00
|
||||
-00
|
||||
--- ./ter-u14v.bdf.orig 2019-07-28 21:07:36.416588700 +0300
|
||||
+++ ./ter-u14v.bdf 2019-07-28 21:07:51.252214800 +0300
|
||||
@@ -205 +205 @@
|
||||
-18
|
||||
+30
|
||||
@@ -1398,0 +1399,2 @@
|
||||
+00
|
||||
+30
|
||||
@@ -1401,2 +1402,0 @@
|
||||
-00
|
||||
-00
|
||||
--- ./ter-u16b.bdf.orig 2019-07-28 21:07:36.634989100 +0300
|
||||
+++ ./ter-u16b.bdf 2019-07-28 21:07:51.470615100 +0300
|
||||
@@ -221 +221 @@
|
||||
-18
|
||||
+30
|
||||
@@ -1528,0 +1529,2 @@
|
||||
+00
|
||||
+30
|
||||
@@ -1531,2 +1532,0 @@
|
||||
-00
|
||||
-00
|
||||
--- ./ter-u16n.bdf.orig 2019-07-28 21:07:36.541388900 +0300
|
||||
+++ ./ter-u16n.bdf 2019-07-28 21:07:51.361414900 +0300
|
||||
@@ -219,2 +219,2 @@
|
||||
-10
|
||||
-10
|
||||
+08
|
||||
+08
|
||||
@@ -1528,0 +1529,2 @@
|
||||
+00
|
||||
+10
|
||||
@@ -1531,2 +1532,0 @@
|
||||
-00
|
||||
-00
|
||||
--- ./ter-u16v.bdf.orig 2019-07-28 21:07:36.759789300 +0300
|
||||
+++ ./ter-u16v.bdf 2019-07-28 21:07:51.564215300 +0300
|
||||
@@ -221 +221 @@
|
||||
-18
|
||||
+30
|
||||
@@ -1528,0 +1529,2 @@
|
||||
+00
|
||||
+30
|
||||
@@ -1531,2 +1532,0 @@
|
||||
-00
|
||||
-00
|
||||
--- ./ter-u18b.bdf.orig 2019-07-28 21:07:36.993789700 +0300
|
||||
+++ ./ter-u18b.bdf 2019-07-28 21:07:51.813815700 +0300
|
||||
@@ -238 +238 @@
|
||||
-0C00
|
||||
+1800
|
||||
@@ -1658,0 +1659,3 @@
|
||||
+0000
|
||||
+1800
|
||||
+1800
|
||||
@@ -1661,3 +1663,0 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
--- ./ter-u18n.bdf.orig 2019-07-28 21:07:36.884589500 +0300
|
||||
+++ ./ter-u18n.bdf 2019-07-28 21:07:51.704615500 +0300
|
||||
@@ -238 +238 @@
|
||||
-0800
|
||||
+1000
|
||||
@@ -1658,0 +1659,3 @@
|
||||
+0000
|
||||
+1000
|
||||
+1000
|
||||
@@ -1661,3 +1663,0 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
--- ./ter-u20b.bdf.orig 2019-07-28 21:07:37.290190200 +0300
|
||||
+++ ./ter-u20b.bdf 2019-07-28 21:07:52.079016200 +0300
|
||||
@@ -254 +254 @@
|
||||
-0C00
|
||||
+1800
|
||||
@@ -1788,0 +1789,3 @@
|
||||
+0000
|
||||
+1800
|
||||
+1800
|
||||
@@ -1791,3 +1793,0 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
--- ./ter-u20n.bdf.orig 2019-07-28 21:07:37.102989900 +0300
|
||||
+++ ./ter-u20n.bdf 2019-07-28 21:07:51.923015900 +0300
|
||||
@@ -254 +254 @@
|
||||
-0800
|
||||
+1000
|
||||
@@ -1788,0 +1789,3 @@
|
||||
+0000
|
||||
+1000
|
||||
+1000
|
||||
@@ -1791,3 +1793,0 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
--- ./ter-u22b.bdf.orig 2019-07-28 21:07:37.524190600 +0300
|
||||
+++ ./ter-u22b.bdf 2019-07-28 21:07:52.313016600 +0300
|
||||
@@ -267,4 +267,4 @@
|
||||
-0C00
|
||||
-0C00
|
||||
-0C00
|
||||
-0C00
|
||||
+0600
|
||||
+0600
|
||||
+0600
|
||||
+0600
|
||||
@@ -1919 +1919,4 @@
|
||||
-1800
|
||||
+0000
|
||||
+0C00
|
||||
+0C00
|
||||
+0C00
|
||||
@@ -1922,3 +1924,0 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
--- ./ter-u22n.bdf.orig 2019-07-28 21:07:37.414990400 +0300
|
||||
+++ ./ter-u22n.bdf 2019-07-28 21:07:52.203816400 +0300
|
||||
@@ -271 +271 @@
|
||||
-0400
|
||||
+0800
|
||||
@@ -1919,5 +1918,0 @@
|
||||
-1000
|
||||
-0800
|
||||
-0400
|
||||
-0000
|
||||
-0000
|
||||
@@ -1924,0 +1920,5 @@
|
||||
+0400
|
||||
+0400
|
||||
+0400
|
||||
+0400
|
||||
+0200
|
||||
--- ./ter-u24b.bdf.orig 2019-07-28 21:07:37.773791100 +0300
|
||||
+++ ./ter-u24b.bdf 2019-07-28 21:07:52.562617100 +0300
|
||||
@@ -288 +288 @@
|
||||
-0600
|
||||
+0C00
|
||||
@@ -2049,5 +2048,0 @@
|
||||
-1800
|
||||
-0C00
|
||||
-0600
|
||||
-0000
|
||||
-0000
|
||||
@@ -2055,0 +2051,5 @@
|
||||
+0600
|
||||
+0600
|
||||
+0600
|
||||
+0600
|
||||
+0300
|
||||
--- ./ter-u24n.bdf.orig 2019-07-28 21:07:37.648990900 +0300
|
||||
+++ ./ter-u24n.bdf 2019-07-28 21:07:52.437816800 +0300
|
||||
@@ -288 +288 @@
|
||||
-0400
|
||||
+0800
|
||||
@@ -2049,5 +2048,0 @@
|
||||
-1000
|
||||
-0800
|
||||
-0400
|
||||
-0000
|
||||
-0000
|
||||
@@ -2055,0 +2051,5 @@
|
||||
+0400
|
||||
+0400
|
||||
+0400
|
||||
+0400
|
||||
+0200
|
||||
--- ./ter-u28b.bdf.orig 2019-07-28 21:07:38.038991500 +0300
|
||||
+++ ./ter-u28b.bdf 2019-07-28 21:07:52.827817500 +0300
|
||||
@@ -320,2 +320,2 @@
|
||||
-0300
|
||||
-0300
|
||||
+0600
|
||||
+0600
|
||||
@@ -2309,6 +2308,0 @@
|
||||
-1C00
|
||||
-0E00
|
||||
-0700
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
@@ -2316,0 +2311,6 @@
|
||||
+0600
|
||||
+0600
|
||||
+0600
|
||||
+0600
|
||||
+0300
|
||||
+0300
|
||||
--- ./ter-u28n.bdf.orig 2019-07-28 21:07:37.914191300 +0300
|
||||
+++ ./ter-u28n.bdf 2019-07-28 21:07:52.687417300 +0300
|
||||
@@ -320,2 +320,2 @@
|
||||
-0300
|
||||
-0300
|
||||
+0600
|
||||
+0600
|
||||
@@ -2309,6 +2308,0 @@
|
||||
-0C00
|
||||
-0600
|
||||
-0300
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
@@ -2316,0 +2311,6 @@
|
||||
+0600
|
||||
+0600
|
||||
+0600
|
||||
+0600
|
||||
+0300
|
||||
+0300
|
||||
--- ./ter-u32b.bdf.orig 2019-07-28 21:07:38.335392100 +0300
|
||||
+++ ./ter-u32b.bdf 2019-07-28 21:07:53.124218000 +0300
|
||||
@@ -354,2 +354,2 @@
|
||||
-0380
|
||||
-0380
|
||||
+0700
|
||||
+0700
|
||||
@@ -2570,6 +2569,0 @@
|
||||
-1C00
|
||||
-0E00
|
||||
-0700
|
||||
-0380
|
||||
-0000
|
||||
-0000
|
||||
@@ -2578,0 +2573,6 @@
|
||||
+0380
|
||||
+0380
|
||||
+0380
|
||||
+0380
|
||||
+01C0
|
||||
+01C0
|
||||
--- ./ter-u32n.bdf.orig 2019-07-28 21:07:38.194991800 +0300
|
||||
+++ ./ter-u32n.bdf 2019-07-28 21:07:52.968217800 +0300
|
||||
@@ -354,2 +354,2 @@
|
||||
-0180
|
||||
-0180
|
||||
+0300
|
||||
+0300
|
||||
@@ -2570,6 +2569,0 @@
|
||||
-0E00
|
||||
-0700
|
||||
-0380
|
||||
-01C0
|
||||
-0000
|
||||
-0000
|
||||
@@ -2578,0 +2573,6 @@
|
||||
+0180
|
||||
+0180
|
||||
+0180
|
||||
+0180
|
||||
+00C0
|
||||
+00C0
|
860
alt/hi2-dv1.diff
Normal file
860
alt/hi2-dv1.diff
Normal file
@ -0,0 +1,860 @@
|
||||
--- ./ter-u12b.bdf.orig 2019-07-28 21:08:05.760240200 +0300
|
||||
+++ ./ter-u12b.bdf 2019-07-28 21:08:09.036246000 +0300
|
||||
@@ -10030,3 +10030,2 @@
|
||||
-E0
|
||||
-90
|
||||
-90
|
||||
+00
|
||||
+00
|
||||
@@ -10034,0 +10034 @@
|
||||
+F0
|
||||
@@ -10070,8 +10070,8 @@
|
||||
-78
|
||||
-88
|
||||
-88
|
||||
-88
|
||||
-88
|
||||
-78
|
||||
-08
|
||||
-70
|
||||
+38
|
||||
+48
|
||||
+48
|
||||
+48
|
||||
+48
|
||||
+FC
|
||||
+84
|
||||
+00
|
||||
--- ./ter-u12n.bdf.orig 2019-07-28 21:08:05.666640100 +0300
|
||||
+++ ./ter-u12n.bdf 2019-07-28 21:08:08.942645800 +0300
|
||||
@@ -10030,3 +10030,2 @@
|
||||
-E0
|
||||
-90
|
||||
-90
|
||||
+00
|
||||
+00
|
||||
@@ -10034,0 +10034 @@
|
||||
+F0
|
||||
@@ -10070,8 +10070,8 @@
|
||||
-78
|
||||
-88
|
||||
-88
|
||||
-88
|
||||
-88
|
||||
-78
|
||||
-08
|
||||
-70
|
||||
+38
|
||||
+48
|
||||
+48
|
||||
+48
|
||||
+48
|
||||
+FC
|
||||
+84
|
||||
+00
|
||||
--- ./ter-u14b.bdf.orig 2019-07-28 21:08:05.963040600 +0300
|
||||
+++ ./ter-u14b.bdf 2019-07-28 21:08:09.239046300 +0300
|
||||
@@ -11082,4 +11082,3 @@
|
||||
-78
|
||||
-CC
|
||||
-CC
|
||||
-C8
|
||||
+00
|
||||
+00
|
||||
+00
|
||||
@@ -11088,0 +11088 @@
|
||||
+FC
|
||||
@@ -11127,9 +11127,9 @@
|
||||
-7E
|
||||
-C6
|
||||
-C6
|
||||
-C6
|
||||
-C6
|
||||
-C6
|
||||
-7E
|
||||
-06
|
||||
-7C
|
||||
+3E
|
||||
+66
|
||||
+66
|
||||
+66
|
||||
+66
|
||||
+66
|
||||
+FF
|
||||
+C3
|
||||
+00
|
||||
--- ./ter-u14n.bdf.orig 2019-07-28 21:08:05.853840400 +0300
|
||||
+++ ./ter-u14n.bdf 2019-07-28 21:08:09.145446200 +0300
|
||||
@@ -11082,4 +11082,3 @@
|
||||
-38
|
||||
-44
|
||||
-44
|
||||
-48
|
||||
+00
|
||||
+00
|
||||
+00
|
||||
@@ -11088,0 +11088 @@
|
||||
+7C
|
||||
@@ -11127,8 +11126,0 @@
|
||||
-3E
|
||||
-42
|
||||
-42
|
||||
-42
|
||||
-42
|
||||
-42
|
||||
-3E
|
||||
-02
|
||||
@@ -11135,0 +11128,8 @@
|
||||
+44
|
||||
+44
|
||||
+44
|
||||
+44
|
||||
+44
|
||||
+FE
|
||||
+82
|
||||
+00
|
||||
--- ./ter-u14v.bdf.orig 2019-07-28 21:08:06.056640800 +0300
|
||||
+++ ./ter-u14v.bdf 2019-07-28 21:08:09.332646500 +0300
|
||||
@@ -11082,4 +11082,3 @@
|
||||
-78
|
||||
-CC
|
||||
-CC
|
||||
-C8
|
||||
+00
|
||||
+00
|
||||
+00
|
||||
@@ -11088,0 +11088 @@
|
||||
+FC
|
||||
@@ -11127,9 +11127,9 @@
|
||||
-7E
|
||||
-C6
|
||||
-C6
|
||||
-C6
|
||||
-C6
|
||||
-C6
|
||||
-7E
|
||||
-06
|
||||
-7C
|
||||
+3E
|
||||
+66
|
||||
+66
|
||||
+66
|
||||
+66
|
||||
+66
|
||||
+FF
|
||||
+C3
|
||||
+00
|
||||
--- ./ter-u16b.bdf.orig 2019-07-28 21:08:06.259441100 +0300
|
||||
+++ ./ter-u16b.bdf 2019-07-28 21:08:09.535446900 +0300
|
||||
@@ -12134,4 +12134,3 @@
|
||||
-78
|
||||
-CC
|
||||
-CC
|
||||
-C8
|
||||
+00
|
||||
+00
|
||||
+00
|
||||
@@ -12140,0 +12140 @@
|
||||
+FC
|
||||
@@ -12183,10 +12183,10 @@
|
||||
-7E
|
||||
-C6
|
||||
-C6
|
||||
-C6
|
||||
-C6
|
||||
-C6
|
||||
-7E
|
||||
-06
|
||||
-06
|
||||
-7C
|
||||
+3E
|
||||
+66
|
||||
+66
|
||||
+66
|
||||
+66
|
||||
+66
|
||||
+FF
|
||||
+C3
|
||||
+00
|
||||
+00
|
||||
--- ./ter-u16n.bdf.orig 2019-07-28 21:08:06.165840900 +0300
|
||||
+++ ./ter-u16n.bdf 2019-07-28 21:08:09.426246700 +0300
|
||||
@@ -12134,4 +12134,3 @@
|
||||
-38
|
||||
-44
|
||||
-44
|
||||
-48
|
||||
+00
|
||||
+00
|
||||
+00
|
||||
@@ -12140,0 +12140 @@
|
||||
+7C
|
||||
@@ -12183,9 +12182,0 @@
|
||||
-3E
|
||||
-42
|
||||
-42
|
||||
-42
|
||||
-42
|
||||
-42
|
||||
-3E
|
||||
-02
|
||||
-02
|
||||
@@ -12192,0 +12184,9 @@
|
||||
+44
|
||||
+44
|
||||
+44
|
||||
+44
|
||||
+44
|
||||
+FE
|
||||
+82
|
||||
+00
|
||||
+00
|
||||
--- ./ter-u16v.bdf.orig 2019-07-28 21:08:06.353041300 +0300
|
||||
+++ ./ter-u16v.bdf 2019-07-28 21:08:09.629047000 +0300
|
||||
@@ -12134,4 +12134,3 @@
|
||||
-78
|
||||
-CC
|
||||
-CC
|
||||
-C8
|
||||
+00
|
||||
+00
|
||||
+00
|
||||
@@ -12140,0 +12140 @@
|
||||
+FC
|
||||
@@ -12183,10 +12183,10 @@
|
||||
-7E
|
||||
-C6
|
||||
-C6
|
||||
-C6
|
||||
-C6
|
||||
-C6
|
||||
-7E
|
||||
-06
|
||||
-06
|
||||
-7C
|
||||
+3E
|
||||
+66
|
||||
+66
|
||||
+66
|
||||
+66
|
||||
+66
|
||||
+FF
|
||||
+C3
|
||||
+00
|
||||
+00
|
||||
--- ./ter-u18b.bdf.orig 2019-07-28 21:08:06.587041700 +0300
|
||||
+++ ./ter-u18b.bdf 2019-07-28 21:08:09.863047400 +0300
|
||||
@@ -13186,5 +13186,4 @@
|
||||
-3E00
|
||||
-6300
|
||||
-6300
|
||||
-6300
|
||||
-6200
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
@@ -13194,0 +13194 @@
|
||||
+7F00
|
||||
@@ -13240,12 +13240,12 @@
|
||||
-3F80
|
||||
-6180
|
||||
-6180
|
||||
-6180
|
||||
-6180
|
||||
-6180
|
||||
-6180
|
||||
-6180
|
||||
-3F80
|
||||
-0180
|
||||
-0180
|
||||
-3F00
|
||||
+1F00
|
||||
+3300
|
||||
+6300
|
||||
+6300
|
||||
+6300
|
||||
+6300
|
||||
+6300
|
||||
+6300
|
||||
+FF80
|
||||
+C180
|
||||
+C180
|
||||
+0000
|
||||
--- ./ter-u18n.bdf.orig 2019-07-28 21:08:06.477841500 +0300
|
||||
+++ ./ter-u18n.bdf 2019-07-28 21:08:09.738247200 +0300
|
||||
@@ -13186,5 +13186,4 @@
|
||||
-3C00
|
||||
-4200
|
||||
-4200
|
||||
-4200
|
||||
-4400
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
@@ -13194,0 +13194 @@
|
||||
+7E00
|
||||
@@ -13240,12 +13240,12 @@
|
||||
-3F00
|
||||
-4100
|
||||
-4100
|
||||
-4100
|
||||
-4100
|
||||
-4100
|
||||
-4100
|
||||
-4100
|
||||
-3F00
|
||||
-0100
|
||||
-0100
|
||||
-3E00
|
||||
+0F00
|
||||
+1100
|
||||
+2100
|
||||
+2100
|
||||
+2100
|
||||
+2100
|
||||
+2100
|
||||
+2100
|
||||
+7F80
|
||||
+4080
|
||||
+4080
|
||||
+0000
|
||||
--- ./ter-u20b.bdf.orig 2019-07-28 21:08:06.821042100 +0300
|
||||
+++ ./ter-u20b.bdf 2019-07-28 21:08:10.081447800 +0300
|
||||
@@ -14239,5 +14239,4 @@
|
||||
-3E00
|
||||
-6300
|
||||
-6300
|
||||
-6300
|
||||
-6200
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
@@ -14247,0 +14247 @@
|
||||
+7F00
|
||||
@@ -14297,12 +14297,12 @@
|
||||
-3F80
|
||||
-6180
|
||||
-6180
|
||||
-6180
|
||||
-6180
|
||||
-6180
|
||||
-6180
|
||||
-6180
|
||||
-3F80
|
||||
-0180
|
||||
-0180
|
||||
-3F00
|
||||
+1F00
|
||||
+3300
|
||||
+6300
|
||||
+6300
|
||||
+6300
|
||||
+6300
|
||||
+6300
|
||||
+6300
|
||||
+FF80
|
||||
+C180
|
||||
+C180
|
||||
+0000
|
||||
--- ./ter-u20n.bdf.orig 2019-07-28 21:08:06.711841900 +0300
|
||||
+++ ./ter-u20n.bdf 2019-07-28 21:08:09.972247600 +0300
|
||||
@@ -14239,5 +14239,4 @@
|
||||
-3C00
|
||||
-4200
|
||||
-4200
|
||||
-4200
|
||||
-4400
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
@@ -14247,0 +14247 @@
|
||||
+7E00
|
||||
@@ -14297,12 +14297,12 @@
|
||||
-3F00
|
||||
-4100
|
||||
-4100
|
||||
-4100
|
||||
-4100
|
||||
-4100
|
||||
-4100
|
||||
-4100
|
||||
-3F00
|
||||
-0100
|
||||
-0100
|
||||
-3E00
|
||||
+0F00
|
||||
+1100
|
||||
+2100
|
||||
+2100
|
||||
+2100
|
||||
+2100
|
||||
+2100
|
||||
+2100
|
||||
+7F80
|
||||
+4080
|
||||
+4080
|
||||
+0000
|
||||
--- ./ter-u22b.bdf.orig 2019-07-28 21:08:07.055042500 +0300
|
||||
+++ ./ter-u22b.bdf 2019-07-28 21:08:10.331048300 +0300
|
||||
@@ -15291,8 +15291,5 @@
|
||||
-3E00
|
||||
-6300
|
||||
-6180
|
||||
-6180
|
||||
-6180
|
||||
-6300
|
||||
-7F00
|
||||
-6180
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+7F80
|
||||
@@ -15301,0 +15299 @@
|
||||
+7F80
|
||||
@@ -15303,2 +15301,4 @@
|
||||
-6180
|
||||
-7F00
|
||||
+60C0
|
||||
+60C0
|
||||
+60C0
|
||||
+7F80
|
||||
@@ -15353,14 +15353,14 @@
|
||||
-1FC0
|
||||
-30C0
|
||||
-60C0
|
||||
-60C0
|
||||
-60C0
|
||||
-60C0
|
||||
-60C0
|
||||
-60C0
|
||||
-30C0
|
||||
-1FC0
|
||||
-00C0
|
||||
-00C0
|
||||
-0180
|
||||
-3F00
|
||||
+1F80
|
||||
+3180
|
||||
+6180
|
||||
+6180
|
||||
+6180
|
||||
+6180
|
||||
+6180
|
||||
+6180
|
||||
+6180
|
||||
+FFC0
|
||||
+C0C0
|
||||
+C0C0
|
||||
+0000
|
||||
+0000
|
||||
--- ./ter-u22n.bdf.orig 2019-07-28 21:08:06.930242300 +0300
|
||||
+++ ./ter-u22n.bdf 2019-07-28 21:08:10.206248000 +0300
|
||||
@@ -15291,8 +15291,6 @@
|
||||
-3C00
|
||||
-4200
|
||||
-4100
|
||||
-4100
|
||||
-4100
|
||||
-4200
|
||||
-7E00
|
||||
-4100
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+7F00
|
||||
+4080
|
||||
@@ -15300,0 +15299 @@
|
||||
+7F00
|
||||
@@ -15303,2 +15302,3 @@
|
||||
-4100
|
||||
-7E00
|
||||
+4080
|
||||
+4080
|
||||
+7F00
|
||||
@@ -15353 +15353,4 @@
|
||||
-1F80
|
||||
+0F80
|
||||
+1080
|
||||
+2080
|
||||
+2080
|
||||
@@ -15355,6 +15357,0 @@
|
||||
-4080
|
||||
-4080
|
||||
-4080
|
||||
-4080
|
||||
-4080
|
||||
-4080
|
||||
@@ -15362,5 +15359,8 @@
|
||||
-1F80
|
||||
-0080
|
||||
-0080
|
||||
-0100
|
||||
-3E00
|
||||
+2080
|
||||
+2080
|
||||
+2080
|
||||
+7FC0
|
||||
+4040
|
||||
+4040
|
||||
+0000
|
||||
+0000
|
||||
--- ./ter-u24b.bdf.orig 2019-07-28 21:08:07.289042900 +0300
|
||||
+++ ./ter-u24b.bdf 2019-07-28 21:08:10.565048700 +0300
|
||||
@@ -16344,2 +16344,5 @@
|
||||
-3F00
|
||||
-6180
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+7F80
|
||||
@@ -16349,2 +16351,0 @@
|
||||
-6180
|
||||
-7F80
|
||||
@@ -16351,0 +16353 @@
|
||||
+7FC0
|
||||
@@ -16356,3 +16358 @@
|
||||
-6060
|
||||
-60C0
|
||||
-7F80
|
||||
+7FC0
|
||||
@@ -16410,7 +16410,11 @@
|
||||
-1FE0
|
||||
-3060
|
||||
-6060
|
||||
-6060
|
||||
-6060
|
||||
-6060
|
||||
-6060
|
||||
+0FC0
|
||||
+18C0
|
||||
+30C0
|
||||
+30C0
|
||||
+30C0
|
||||
+30C0
|
||||
+30C0
|
||||
+30C0
|
||||
+30C0
|
||||
+30C0
|
||||
+7FE0
|
||||
@@ -16419,6 +16423,2 @@
|
||||
-30E0
|
||||
-1FE0
|
||||
-0060
|
||||
-0060
|
||||
-00C0
|
||||
-3F80
|
||||
+0000
|
||||
+0000
|
||||
--- ./ter-u24n.bdf.orig 2019-07-28 21:08:07.164242700 +0300
|
||||
+++ ./ter-u24n.bdf 2019-07-28 21:08:10.440248500 +0300
|
||||
@@ -16344,2 +16344,5 @@
|
||||
-3E00
|
||||
-4100
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+7F00
|
||||
@@ -16349,2 +16351,0 @@
|
||||
-4100
|
||||
-7F00
|
||||
@@ -16351,0 +16353 @@
|
||||
+7F80
|
||||
@@ -16356,3 +16358 @@
|
||||
-4040
|
||||
-4080
|
||||
-7F00
|
||||
+7F80
|
||||
@@ -16410,7 +16410,11 @@
|
||||
-1FC0
|
||||
-2040
|
||||
-4040
|
||||
-4040
|
||||
-4040
|
||||
-4040
|
||||
-4040
|
||||
+0F80
|
||||
+1080
|
||||
+2080
|
||||
+2080
|
||||
+2080
|
||||
+2080
|
||||
+2080
|
||||
+2080
|
||||
+2080
|
||||
+2080
|
||||
+7FC0
|
||||
@@ -16419,6 +16423,2 @@
|
||||
-20C0
|
||||
-1F40
|
||||
-0040
|
||||
-0040
|
||||
-0080
|
||||
-3F00
|
||||
+0000
|
||||
+0000
|
||||
--- ./ter-u28b.bdf.orig 2019-07-28 21:08:07.616643500 +0300
|
||||
+++ ./ter-u28b.bdf 2019-07-28 21:08:10.845849200 +0300
|
||||
@@ -18448 +18448,5 @@
|
||||
-3F00
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
@@ -18450,5 +18453,0 @@
|
||||
-61C0
|
||||
-60C0
|
||||
-60C0
|
||||
-60C0
|
||||
-6180
|
||||
@@ -18456,4 +18455,6 @@
|
||||
-7FE0
|
||||
-6070
|
||||
-6030
|
||||
-6030
|
||||
+6060
|
||||
+6060
|
||||
+6060
|
||||
+7FC0
|
||||
+7FC0
|
||||
+6060
|
||||
@@ -18463 +18463,0 @@
|
||||
-6070
|
||||
@@ -18523 +18523,11 @@
|
||||
-1FF0
|
||||
+07F0
|
||||
+0FF0
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
@@ -18525,16 +18535,6 @@
|
||||
-7030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-7030
|
||||
-3FF0
|
||||
-1FF0
|
||||
-0030
|
||||
-0030
|
||||
-0070
|
||||
-3FE0
|
||||
-3FC0
|
||||
+7FF8
|
||||
+6018
|
||||
+6018
|
||||
+6018
|
||||
+0000
|
||||
+0000
|
||||
--- ./ter-u28n.bdf.orig 2019-07-28 21:08:07.413843100 +0300
|
||||
+++ ./ter-u28n.bdf 2019-07-28 21:08:10.705448900 +0300
|
||||
@@ -18448,4 +18448,6 @@
|
||||
-3F00
|
||||
-6180
|
||||
-60C0
|
||||
-60C0
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+7F80
|
||||
@@ -18452,0 +18455,3 @@
|
||||
+6060
|
||||
+6060
|
||||
+6060
|
||||
@@ -18454 +18458,0 @@
|
||||
-6180
|
||||
@@ -18460,4 +18463,0 @@
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
@@ -18523,18 +18523,18 @@
|
||||
-1FF0
|
||||
-3030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-6030
|
||||
-3030
|
||||
-1FF0
|
||||
-0030
|
||||
-0030
|
||||
-0030
|
||||
-0060
|
||||
-3FC0
|
||||
+07F0
|
||||
+0C30
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+1830
|
||||
+7FF8
|
||||
+6018
|
||||
+6018
|
||||
+6018
|
||||
+0000
|
||||
+0000
|
||||
--- ./ter-u32b.bdf.orig 2019-07-28 21:08:07.913044000 +0300
|
||||
+++ ./ter-u32b.bdf 2019-07-28 21:08:11.142249700 +0300
|
||||
@@ -20554,8 +20554,6 @@
|
||||
-3FC0
|
||||
-7FE0
|
||||
-70F0
|
||||
-7070
|
||||
-7070
|
||||
-7070
|
||||
-7070
|
||||
-70E0
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
@@ -20563,0 +20562 @@
|
||||
+7078
|
||||
@@ -20565,4 +20564,5 @@
|
||||
-701C
|
||||
-701C
|
||||
-701C
|
||||
-701C
|
||||
+7038
|
||||
+7038
|
||||
+7FF0
|
||||
+7FF8
|
||||
+703C
|
||||
@@ -20638 +20638,12 @@
|
||||
-1FFC
|
||||
+07FC
|
||||
+0FFC
|
||||
+1E1C
|
||||
+1C1C
|
||||
+1C1C
|
||||
+1C1C
|
||||
+1C1C
|
||||
+1C1C
|
||||
+1C1C
|
||||
+1C1C
|
||||
+1C1C
|
||||
+1C1C
|
||||
@@ -20640,17 +20651,6 @@
|
||||
-781C
|
||||
-701C
|
||||
-701C
|
||||
-701C
|
||||
-701C
|
||||
-701C
|
||||
-701C
|
||||
-701C
|
||||
-701C
|
||||
-781C
|
||||
-3FFC
|
||||
-1FFC
|
||||
-001C
|
||||
-001C
|
||||
-003C
|
||||
-3FF8
|
||||
-3FF0
|
||||
+7FFE
|
||||
+700E
|
||||
+700E
|
||||
+700E
|
||||
+700E
|
||||
+0000
|
||||
--- ./ter-u32n.bdf.orig 2019-07-28 21:08:07.757043700 +0300
|
||||
+++ ./ter-u32n.bdf 2019-07-28 21:08:10.986249400 +0300
|
||||
@@ -20554,8 +20554,6 @@
|
||||
-1FC0
|
||||
-3FE0
|
||||
-3070
|
||||
-3030
|
||||
-3030
|
||||
-3030
|
||||
-3030
|
||||
-3070
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
+0000
|
||||
@@ -20564,0 +20563,5 @@
|
||||
+3018
|
||||
+3018
|
||||
+3038
|
||||
+3FF0
|
||||
+3FF8
|
||||
@@ -20568,3 +20570,0 @@
|
||||
-300C
|
||||
-300C
|
||||
-300C
|
||||
@@ -20638,19 +20638,19 @@
|
||||
-0FFC
|
||||
-1FFC
|
||||
-380C
|
||||
-300C
|
||||
-300C
|
||||
-300C
|
||||
-300C
|
||||
-300C
|
||||
-300C
|
||||
-300C
|
||||
-300C
|
||||
-380C
|
||||
-1FFC
|
||||
-0FFC
|
||||
-000C
|
||||
-000C
|
||||
-001C
|
||||
-1FF8
|
||||
-1FF0
|
||||
+07F8
|
||||
+0FF8
|
||||
+1C18
|
||||
+1818
|
||||
+1818
|
||||
+1818
|
||||
+1818
|
||||
+1818
|
||||
+1818
|
||||
+1818
|
||||
+1818
|
||||
+1818
|
||||
+3FF8
|
||||
+7FFC
|
||||
+600C
|
||||
+600C
|
||||
+600C
|
||||
+600C
|
||||
+0000
|
945
alt/hi2-ka2.diff
Normal file
945
alt/hi2-ka2.diff
Normal file
@ -0,0 +1,945 @@
|
||||
--- ./ter-u12b.bdf.orig 2019-07-28 21:08:05.760240200 +0300
|
||||
+++ ./ter-u12b.bdf 2019-07-28 21:08:11.937851100 +0300
|
||||
@@ -10182,2 +10182,2 @@
|
||||
-00
|
||||
-00
|
||||
+40
|
||||
+40
|
||||
@@ -10828,2 +10828,2 @@
|
||||
-08
|
||||
-10
|
||||
+48
|
||||
+50
|
||||
@@ -11189,2 +11189,2 @@
|
||||
-00
|
||||
-00
|
||||
+40
|
||||
+40
|
||||
@@ -11227,2 +11227,2 @@
|
||||
-00
|
||||
-00
|
||||
+80
|
||||
+80
|
||||
@@ -11265,3 +11265,3 @@
|
||||
-00
|
||||
-00
|
||||
-C8
|
||||
+C0
|
||||
+40
|
||||
+48
|
||||
--- ./ter-u12n.bdf.orig 2019-07-28 21:08:05.666640100 +0300
|
||||
+++ ./ter-u12n.bdf 2019-07-28 21:08:11.844250900 +0300
|
||||
@@ -10182,2 +10182,2 @@
|
||||
-00
|
||||
-00
|
||||
+40
|
||||
+40
|
||||
@@ -10828,2 +10828,2 @@
|
||||
-08
|
||||
-10
|
||||
+48
|
||||
+50
|
||||
@@ -11189,2 +11189,2 @@
|
||||
-00
|
||||
-00
|
||||
+40
|
||||
+40
|
||||
@@ -11227,2 +11227,2 @@
|
||||
-00
|
||||
-00
|
||||
+80
|
||||
+80
|
||||
@@ -11265,3 +11265,3 @@
|
||||
-00
|
||||
-00
|
||||
-C8
|
||||
+C0
|
||||
+40
|
||||
+48
|
||||
--- ./ter-u14b.bdf.orig 2019-07-28 21:08:05.963040600 +0300
|
||||
+++ ./ter-u14b.bdf 2019-07-28 21:08:12.140651400 +0300
|
||||
@@ -11250,3 +11250,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+C0
|
||||
+C0
|
||||
+C0
|
||||
@@ -11964,3 +11964,3 @@
|
||||
-18
|
||||
-30
|
||||
-00
|
||||
+D8
|
||||
+F0
|
||||
+C0
|
||||
@@ -12363,3 +12363,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+C0
|
||||
+C0
|
||||
+C0
|
||||
@@ -12405,3 +12405,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+C0
|
||||
+C0
|
||||
+C0
|
||||
@@ -12447,4 +12447,4 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
-E3
|
||||
+E0
|
||||
+60
|
||||
+60
|
||||
+63
|
||||
--- ./ter-u14n.bdf.orig 2019-07-28 21:08:05.853840400 +0300
|
||||
+++ ./ter-u14n.bdf 2019-07-28 21:08:12.031451200 +0300
|
||||
@@ -11250,3 +11250,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+40
|
||||
+40
|
||||
+40
|
||||
@@ -11964,3 +11964,3 @@
|
||||
-08
|
||||
-10
|
||||
-00
|
||||
+48
|
||||
+50
|
||||
+40
|
||||
@@ -12363,3 +12363,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+40
|
||||
+40
|
||||
+40
|
||||
@@ -12405,3 +12405,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+40
|
||||
+40
|
||||
+40
|
||||
@@ -12447,4 +12447,4 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
-C2
|
||||
+C0
|
||||
+40
|
||||
+40
|
||||
+42
|
||||
--- ./ter-u14v.bdf.orig 2019-07-28 21:08:06.056640800 +0300
|
||||
+++ ./ter-u14v.bdf 2019-07-28 21:08:12.234251600 +0300
|
||||
@@ -11250,3 +11250,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+C0
|
||||
+C0
|
||||
+C0
|
||||
@@ -11964,3 +11964,3 @@
|
||||
-18
|
||||
-30
|
||||
-00
|
||||
+D8
|
||||
+F0
|
||||
+C0
|
||||
@@ -12363,3 +12363,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+C0
|
||||
+C0
|
||||
+C0
|
||||
@@ -12405,3 +12405,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+C0
|
||||
+C0
|
||||
+C0
|
||||
@@ -12447,4 +12447,4 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
-E3
|
||||
+E0
|
||||
+60
|
||||
+60
|
||||
+63
|
||||
--- ./ter-u16b.bdf.orig 2019-07-28 21:08:06.259441100 +0300
|
||||
+++ ./ter-u16b.bdf 2019-07-28 21:08:12.452652000 +0300
|
||||
@@ -12318,3 +12318,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+C0
|
||||
+C0
|
||||
+C0
|
||||
@@ -13100,3 +13100,3 @@
|
||||
-18
|
||||
-30
|
||||
-00
|
||||
+D8
|
||||
+F0
|
||||
+C0
|
||||
@@ -13537,3 +13537,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+C0
|
||||
+C0
|
||||
+C0
|
||||
@@ -13583,3 +13583,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+C0
|
||||
+C0
|
||||
+C0
|
||||
@@ -13629,4 +13629,4 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
-E3
|
||||
+E0
|
||||
+60
|
||||
+60
|
||||
+63
|
||||
--- ./ter-u16n.bdf.orig 2019-07-28 21:08:06.165840900 +0300
|
||||
+++ ./ter-u16n.bdf 2019-07-28 21:08:12.343451800 +0300
|
||||
@@ -12318,3 +12318,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+40
|
||||
+40
|
||||
+40
|
||||
@@ -13100,3 +13100,3 @@
|
||||
-08
|
||||
-10
|
||||
-00
|
||||
+48
|
||||
+50
|
||||
+40
|
||||
@@ -13537,3 +13537,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+40
|
||||
+40
|
||||
+40
|
||||
@@ -13583,3 +13583,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+40
|
||||
+40
|
||||
+40
|
||||
@@ -13629,4 +13629,4 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
-C2
|
||||
+C0
|
||||
+40
|
||||
+40
|
||||
+42
|
||||
--- ./ter-u16v.bdf.orig 2019-07-28 21:08:06.353041300 +0300
|
||||
+++ ./ter-u16v.bdf 2019-07-28 21:08:12.655452300 +0300
|
||||
@@ -12318,3 +12318,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+C0
|
||||
+C0
|
||||
+C0
|
||||
@@ -13100,3 +13100,3 @@
|
||||
-18
|
||||
-30
|
||||
-00
|
||||
+D8
|
||||
+F0
|
||||
+C0
|
||||
@@ -13537,3 +13537,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+C0
|
||||
+C0
|
||||
+C0
|
||||
@@ -13583,3 +13583,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+C0
|
||||
+C0
|
||||
+C0
|
||||
@@ -13629,4 +13629,4 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
-E3
|
||||
+E0
|
||||
+60
|
||||
+60
|
||||
+63
|
||||
--- ./ter-u18b.bdf.orig 2019-07-28 21:08:06.587041700 +0300
|
||||
+++ ./ter-u18b.bdf 2019-07-28 21:08:12.889452800 +0300
|
||||
@@ -13386,4 +13386,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
@@ -14237,3 +14237,3 @@
|
||||
-0600
|
||||
-0C00
|
||||
-0000
|
||||
+6600
|
||||
+6C00
|
||||
+6000
|
||||
@@ -14712,3 +14712,3 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
@@ -14762,3 +14762,3 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
@@ -14811,5 +14811,5 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-E180
|
||||
+8000
|
||||
+E000
|
||||
+6000
|
||||
+6000
|
||||
+6180
|
||||
--- ./ter-u18n.bdf.orig 2019-07-28 21:08:06.477841500 +0300
|
||||
+++ ./ter-u18n.bdf 2019-07-28 21:08:12.764652500 +0300
|
||||
@@ -13386,4 +13386,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
@@ -14237,3 +14237,3 @@
|
||||
-0400
|
||||
-0800
|
||||
-0000
|
||||
+4400
|
||||
+4800
|
||||
+4000
|
||||
@@ -14712,3 +14712,3 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
@@ -14762,3 +14762,3 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
@@ -14811,5 +14811,5 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-C100
|
||||
+8000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
+4100
|
||||
--- ./ter-u20b.bdf.orig 2019-07-28 21:08:06.821042100 +0300
|
||||
+++ ./ter-u20b.bdf 2019-07-28 21:08:13.107853100 +0300
|
||||
@@ -14455,4 +14455,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
@@ -15373,4 +15373,4 @@
|
||||
-0000
|
||||
-0600
|
||||
-0C00
|
||||
-0000
|
||||
+6000
|
||||
+6600
|
||||
+6C00
|
||||
+6000
|
||||
@@ -15886,4 +15886,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
@@ -15940,4 +15940,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
@@ -15994,5 +15994,5 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-E180
|
||||
+E000
|
||||
+E000
|
||||
+6000
|
||||
+6000
|
||||
+6180
|
||||
--- ./ter-u20n.bdf.orig 2019-07-28 21:08:06.711841900 +0300
|
||||
+++ ./ter-u20n.bdf 2019-07-28 21:08:12.998652900 +0300
|
||||
@@ -14455,4 +14455,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
@@ -15373,4 +15373,4 @@
|
||||
-0000
|
||||
-0400
|
||||
-0800
|
||||
-0000
|
||||
+4000
|
||||
+4400
|
||||
+4800
|
||||
+4000
|
||||
@@ -15886,4 +15886,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
@@ -15940,4 +15940,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
@@ -15994,5 +15994,5 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-C100
|
||||
+C000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
+4100
|
||||
--- ./ter-u22b.bdf.orig 2019-07-28 21:08:07.055042500 +0300
|
||||
+++ ./ter-u22b.bdf 2019-07-28 21:08:13.341853500 +0300
|
||||
@@ -15523,4 +15523,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
@@ -16509,4 +16509,4 @@
|
||||
-0180
|
||||
-0300
|
||||
-0600
|
||||
-0000
|
||||
+3180
|
||||
+3300
|
||||
+3600
|
||||
+3000
|
||||
@@ -17060,4 +17060,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
@@ -17118,4 +17118,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
@@ -17176,6 +17176,6 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-70C0
|
||||
-7180
|
||||
+7000
|
||||
+7000
|
||||
+3000
|
||||
+3000
|
||||
+30C0
|
||||
+3180
|
||||
--- ./ter-u22n.bdf.orig 2019-07-28 21:08:06.930242300 +0300
|
||||
+++ ./ter-u22n.bdf 2019-07-28 21:08:13.232653400 +0300
|
||||
@@ -15523,4 +15523,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+2000
|
||||
+2000
|
||||
+2000
|
||||
+2000
|
||||
@@ -16509,4 +16509,4 @@
|
||||
-0100
|
||||
-0200
|
||||
-0400
|
||||
-0000
|
||||
+2100
|
||||
+2200
|
||||
+2400
|
||||
+2000
|
||||
@@ -17060,4 +17060,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+2000
|
||||
+2000
|
||||
+2000
|
||||
+2000
|
||||
@@ -17118,4 +17118,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+2000
|
||||
+2000
|
||||
+2000
|
||||
+2000
|
||||
@@ -17176,5 +17176,5 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-E080
|
||||
+E000
|
||||
+2000
|
||||
+2000
|
||||
+2000
|
||||
+2080
|
||||
--- ./ter-u24b.bdf.orig 2019-07-28 21:08:07.289042900 +0300
|
||||
+++ ./ter-u24b.bdf 2019-07-28 21:08:13.607054000 +0300
|
||||
@@ -16592,4 +16592,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
@@ -17646,4 +17646,4 @@
|
||||
-0180
|
||||
-0300
|
||||
-0600
|
||||
-0000
|
||||
+3180
|
||||
+3300
|
||||
+3600
|
||||
+3000
|
||||
@@ -18235,4 +18235,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
@@ -18297,4 +18297,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
@@ -18359,6 +18359,6 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-7060
|
||||
-70C0
|
||||
+7000
|
||||
+7000
|
||||
+3000
|
||||
+3000
|
||||
+3060
|
||||
+30C0
|
||||
--- ./ter-u24n.bdf.orig 2019-07-28 21:08:07.164242700 +0300
|
||||
+++ ./ter-u24n.bdf 2019-07-28 21:08:13.482253800 +0300
|
||||
@@ -16592,4 +16592,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+2000
|
||||
+2000
|
||||
+2000
|
||||
+2000
|
||||
@@ -17646,4 +17646,4 @@
|
||||
-0100
|
||||
-0200
|
||||
-0400
|
||||
-0000
|
||||
+2100
|
||||
+2200
|
||||
+2400
|
||||
+2000
|
||||
@@ -18235,4 +18235,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+2000
|
||||
+2000
|
||||
+2000
|
||||
+2000
|
||||
@@ -18297,4 +18297,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
@@ -18359,5 +18359,5 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-E040
|
||||
+6000
|
||||
+6000
|
||||
+2000
|
||||
+2000
|
||||
+2040
|
||||
--- ./ter-u28b.bdf.orig 2019-07-28 21:08:07.616643500 +0300
|
||||
+++ ./ter-u28b.bdf 2019-07-28 21:08:13.950254600 +0300
|
||||
@@ -18728,5 +18728,5 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
@@ -19918,5 +19918,5 @@
|
||||
-0000
|
||||
-01C0
|
||||
-0380
|
||||
-0700
|
||||
-0000
|
||||
+3000
|
||||
+31C0
|
||||
+3380
|
||||
+3700
|
||||
+3000
|
||||
@@ -20583,5 +20583,5 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
@@ -20653,5 +20653,5 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
@@ -20723,7 +20723,7 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-F070
|
||||
-F0E0
|
||||
+F000
|
||||
+F000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3070
|
||||
+30E0
|
||||
--- ./ter-u28n.bdf.orig 2019-07-28 21:08:07.413843100 +0300
|
||||
+++ ./ter-u28n.bdf 2019-07-28 21:08:13.809854400 +0300
|
||||
@@ -18728,5 +18728,5 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
@@ -19918,5 +19918,5 @@
|
||||
-0000
|
||||
-00C0
|
||||
-0180
|
||||
-0300
|
||||
-0000
|
||||
+3000
|
||||
+30C0
|
||||
+3180
|
||||
+3300
|
||||
+3000
|
||||
@@ -20583,5 +20583,5 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
@@ -20653,5 +20653,5 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
@@ -20723,7 +20723,7 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-F030
|
||||
-F060
|
||||
+F000
|
||||
+F000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3030
|
||||
+3060
|
||||
--- ./ter-u32b.bdf.orig 2019-07-28 21:08:07.913044000 +0300
|
||||
+++ ./ter-u32b.bdf 2019-07-28 21:08:14.262255200 +0300
|
||||
@@ -20866,6 +20866,6 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+3800
|
||||
+3800
|
||||
+3800
|
||||
+3800
|
||||
+3800
|
||||
+3800
|
||||
@@ -22192,6 +22192,6 @@
|
||||
-0070
|
||||
-00E0
|
||||
-01C0
|
||||
-0380
|
||||
-0000
|
||||
-0000
|
||||
+3838
|
||||
+3870
|
||||
+38E0
|
||||
+39C0
|
||||
+3800
|
||||
+3800
|
||||
@@ -22933,6 +22933,6 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+3800
|
||||
+3800
|
||||
+3800
|
||||
+3800
|
||||
+3800
|
||||
+3800
|
||||
@@ -23011,6 +23011,6 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+7000
|
||||
+7000
|
||||
+7000
|
||||
+7000
|
||||
+7000
|
||||
+7000
|
||||
@@ -23089,8 +23089,8 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-F81C
|
||||
-F838
|
||||
+F800
|
||||
+F800
|
||||
+3800
|
||||
+3800
|
||||
+3800
|
||||
+3800
|
||||
+381C
|
||||
+3838
|
||||
--- ./ter-u32n.bdf.orig 2019-07-28 21:08:07.757043700 +0300
|
||||
+++ ./ter-u32n.bdf 2019-07-28 21:08:14.090654900 +0300
|
||||
@@ -20866,6 +20866,6 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+1800
|
||||
+1800
|
||||
+1800
|
||||
+1800
|
||||
+1800
|
||||
+1800
|
||||
@@ -22192,6 +22192,6 @@
|
||||
-0070
|
||||
-00E0
|
||||
-01C0
|
||||
-0380
|
||||
-0000
|
||||
-0000
|
||||
+1838
|
||||
+1870
|
||||
+18E0
|
||||
+19C0
|
||||
+1800
|
||||
+1800
|
||||
@@ -22933,6 +22933,6 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+1800
|
||||
+1800
|
||||
+1800
|
||||
+1800
|
||||
+1800
|
||||
+1800
|
||||
@@ -23011,6 +23011,6 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
@@ -23089,8 +23089,8 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-781C
|
||||
-7838
|
||||
+7800
|
||||
+7800
|
||||
+1800
|
||||
+1800
|
||||
+1800
|
||||
+1800
|
||||
+181C
|
||||
+1838
|
||||
--- ./dup/xos4-2.dup.orig 2019-03-13 11:25:47.071547400 +0200
|
||||
+++ ./dup/xos4-2.dup 2019-07-28 21:08:05.463839700 +0300
|
||||
@@ -107 +107 @@
|
||||
-0138 043A
|
||||
+006B 043A
|
3199
alt/hi2.diff
Normal file
3199
alt/hi2.diff
Normal file
File diff suppressed because it is too large
Load Diff
1360
alt/ij1.diff
Normal file
1360
alt/ij1.diff
Normal file
File diff suppressed because it is too large
Load Diff
937
alt/ka2.diff
Normal file
937
alt/ka2.diff
Normal file
@ -0,0 +1,937 @@
|
||||
--- ./ter-u12b.bdf.orig 2019-07-28 21:07:36.104588100 +0300
|
||||
+++ ./ter-u12b.bdf 2019-07-28 21:08:02.765035000 +0300
|
||||
@@ -10182,2 +10182,2 @@
|
||||
-00
|
||||
-00
|
||||
+40
|
||||
+40
|
||||
@@ -10828,2 +10828,2 @@
|
||||
-08
|
||||
-10
|
||||
+48
|
||||
+50
|
||||
@@ -11189,2 +11189,2 @@
|
||||
-00
|
||||
-00
|
||||
+40
|
||||
+40
|
||||
@@ -11227,2 +11227,2 @@
|
||||
-00
|
||||
-00
|
||||
+80
|
||||
+80
|
||||
@@ -11265,3 +11265,3 @@
|
||||
-00
|
||||
-00
|
||||
-C8
|
||||
+C0
|
||||
+40
|
||||
+48
|
||||
--- ./ter-u12n.bdf.orig 2019-07-28 21:07:35.995388000 +0300
|
||||
+++ ./ter-u12n.bdf 2019-07-28 21:08:02.671434800 +0300
|
||||
@@ -10182,2 +10182,2 @@
|
||||
-00
|
||||
-00
|
||||
+40
|
||||
+40
|
||||
@@ -10828,2 +10828,2 @@
|
||||
-08
|
||||
-10
|
||||
+48
|
||||
+50
|
||||
@@ -11189,2 +11189,2 @@
|
||||
-00
|
||||
-00
|
||||
+40
|
||||
+40
|
||||
@@ -11227,2 +11227,2 @@
|
||||
-00
|
||||
-00
|
||||
+80
|
||||
+80
|
||||
@@ -11265,3 +11265,3 @@
|
||||
-00
|
||||
-00
|
||||
-C8
|
||||
+C0
|
||||
+40
|
||||
+48
|
||||
--- ./ter-u14b.bdf.orig 2019-07-28 21:07:36.322988500 +0300
|
||||
+++ ./ter-u14b.bdf 2019-07-28 21:08:02.967835300 +0300
|
||||
@@ -11250,3 +11250,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+C0
|
||||
+C0
|
||||
+C0
|
||||
@@ -11964,3 +11964,3 @@
|
||||
-18
|
||||
-30
|
||||
-00
|
||||
+D8
|
||||
+F0
|
||||
+C0
|
||||
@@ -12363,3 +12363,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+C0
|
||||
+C0
|
||||
+C0
|
||||
@@ -12405,3 +12405,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+C0
|
||||
+C0
|
||||
+C0
|
||||
@@ -12447,4 +12447,4 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
-E3
|
||||
+E0
|
||||
+60
|
||||
+60
|
||||
+63
|
||||
--- ./ter-u14n.bdf.orig 2019-07-28 21:07:36.213788300 +0300
|
||||
+++ ./ter-u14n.bdf 2019-07-28 21:08:02.858635100 +0300
|
||||
@@ -11250,3 +11250,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+40
|
||||
+40
|
||||
+40
|
||||
@@ -11964,3 +11964,3 @@
|
||||
-08
|
||||
-10
|
||||
-00
|
||||
+48
|
||||
+50
|
||||
+40
|
||||
@@ -12363,3 +12363,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+40
|
||||
+40
|
||||
+40
|
||||
@@ -12405,3 +12405,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+40
|
||||
+40
|
||||
+40
|
||||
@@ -12447,4 +12447,4 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
-C2
|
||||
+C0
|
||||
+40
|
||||
+40
|
||||
+42
|
||||
--- ./ter-u14v.bdf.orig 2019-07-28 21:07:36.416588700 +0300
|
||||
+++ ./ter-u14v.bdf 2019-07-28 21:08:03.061435500 +0300
|
||||
@@ -11250,3 +11250,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+C0
|
||||
+C0
|
||||
+C0
|
||||
@@ -11964,3 +11964,3 @@
|
||||
-18
|
||||
-30
|
||||
-00
|
||||
+D8
|
||||
+F0
|
||||
+C0
|
||||
@@ -12363,3 +12363,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+C0
|
||||
+C0
|
||||
+C0
|
||||
@@ -12405,3 +12405,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+C0
|
||||
+C0
|
||||
+C0
|
||||
@@ -12447,4 +12447,4 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
-E3
|
||||
+E0
|
||||
+60
|
||||
+60
|
||||
+63
|
||||
--- ./ter-u16b.bdf.orig 2019-07-28 21:07:36.634989100 +0300
|
||||
+++ ./ter-u16b.bdf 2019-07-28 21:08:03.279835900 +0300
|
||||
@@ -12318,3 +12318,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+C0
|
||||
+C0
|
||||
+C0
|
||||
@@ -13100,3 +13100,3 @@
|
||||
-18
|
||||
-30
|
||||
-00
|
||||
+D8
|
||||
+F0
|
||||
+C0
|
||||
@@ -13537,3 +13537,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+C0
|
||||
+C0
|
||||
+C0
|
||||
@@ -13583,3 +13583,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+C0
|
||||
+C0
|
||||
+C0
|
||||
@@ -13629,4 +13629,4 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
-E3
|
||||
+E0
|
||||
+60
|
||||
+60
|
||||
+63
|
||||
--- ./ter-u16n.bdf.orig 2019-07-28 21:07:36.541388900 +0300
|
||||
+++ ./ter-u16n.bdf 2019-07-28 21:08:03.170635700 +0300
|
||||
@@ -12318,3 +12318,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+40
|
||||
+40
|
||||
+40
|
||||
@@ -13100,3 +13100,3 @@
|
||||
-08
|
||||
-10
|
||||
-00
|
||||
+48
|
||||
+50
|
||||
+40
|
||||
@@ -13537,3 +13537,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+40
|
||||
+40
|
||||
+40
|
||||
@@ -13583,3 +13583,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+40
|
||||
+40
|
||||
+40
|
||||
@@ -13629,4 +13629,4 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
-C2
|
||||
+C0
|
||||
+40
|
||||
+40
|
||||
+42
|
||||
--- ./ter-u16v.bdf.orig 2019-07-28 21:07:36.759789300 +0300
|
||||
+++ ./ter-u16v.bdf 2019-07-28 21:08:03.373436000 +0300
|
||||
@@ -12318,3 +12318,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+C0
|
||||
+C0
|
||||
+C0
|
||||
@@ -13100,3 +13100,3 @@
|
||||
-18
|
||||
-30
|
||||
-00
|
||||
+D8
|
||||
+F0
|
||||
+C0
|
||||
@@ -13537,3 +13537,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+C0
|
||||
+C0
|
||||
+C0
|
||||
@@ -13583,3 +13583,3 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
+C0
|
||||
+C0
|
||||
+C0
|
||||
@@ -13629,4 +13629,4 @@
|
||||
-00
|
||||
-00
|
||||
-00
|
||||
-E3
|
||||
+E0
|
||||
+60
|
||||
+60
|
||||
+63
|
||||
--- ./ter-u18b.bdf.orig 2019-07-28 21:07:36.993789700 +0300
|
||||
+++ ./ter-u18b.bdf 2019-07-28 21:08:03.591836400 +0300
|
||||
@@ -13387,3 +13387,3 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
@@ -14237,3 +14237,3 @@
|
||||
-0600
|
||||
-0C00
|
||||
-0000
|
||||
+6600
|
||||
+6C00
|
||||
+6000
|
||||
@@ -14712,3 +14712,3 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
@@ -14762,3 +14762,3 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
@@ -14812,4 +14812,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-E180
|
||||
+E000
|
||||
+E000
|
||||
+6000
|
||||
+6180
|
||||
--- ./ter-u18n.bdf.orig 2019-07-28 21:07:36.884589500 +0300
|
||||
+++ ./ter-u18n.bdf 2019-07-28 21:08:03.482636200 +0300
|
||||
@@ -13387,3 +13387,3 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
@@ -14237,3 +14237,3 @@
|
||||
-0400
|
||||
-0800
|
||||
-0000
|
||||
+4400
|
||||
+4800
|
||||
+4000
|
||||
@@ -14712,3 +14712,3 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
@@ -14762,3 +14762,3 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
@@ -14812,4 +14812,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-C100
|
||||
+C000
|
||||
+4000
|
||||
+4000
|
||||
+4100
|
||||
--- ./ter-u20b.bdf.orig 2019-07-28 21:07:37.290190200 +0300
|
||||
+++ ./ter-u20b.bdf 2019-07-28 21:08:03.810236800 +0300
|
||||
@@ -14455,4 +14455,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
@@ -15373,4 +15373,4 @@
|
||||
-0000
|
||||
-0600
|
||||
-0C00
|
||||
-0000
|
||||
+6000
|
||||
+6600
|
||||
+6C00
|
||||
+6000
|
||||
@@ -15886,4 +15886,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
@@ -15940,4 +15940,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
@@ -15994,5 +15994,5 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-E180
|
||||
+E000
|
||||
+E000
|
||||
+6000
|
||||
+6000
|
||||
+6180
|
||||
--- ./ter-u20n.bdf.orig 2019-07-28 21:07:37.102989900 +0300
|
||||
+++ ./ter-u20n.bdf 2019-07-28 21:08:03.701036600 +0300
|
||||
@@ -14455,4 +14455,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
@@ -15373,4 +15373,4 @@
|
||||
-0000
|
||||
-0400
|
||||
-0800
|
||||
-0000
|
||||
+4000
|
||||
+4400
|
||||
+4800
|
||||
+4000
|
||||
@@ -15886,4 +15886,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
@@ -15940,4 +15940,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
@@ -15994,5 +15994,5 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-C100
|
||||
+C000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
+4100
|
||||
--- ./ter-u22b.bdf.orig 2019-07-28 21:07:37.524190600 +0300
|
||||
+++ ./ter-u22b.bdf 2019-07-28 21:08:04.059837200 +0300
|
||||
@@ -15523,4 +15523,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
@@ -16509,4 +16509,4 @@
|
||||
-0180
|
||||
-0300
|
||||
-0600
|
||||
-0000
|
||||
+3180
|
||||
+3300
|
||||
+3600
|
||||
+3000
|
||||
@@ -17060,4 +17060,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
@@ -17118,4 +17118,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
@@ -17176,6 +17176,6 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-70C0
|
||||
-7180
|
||||
+7000
|
||||
+7000
|
||||
+3000
|
||||
+3000
|
||||
+30C0
|
||||
+3180
|
||||
--- ./ter-u22n.bdf.orig 2019-07-28 21:07:37.414990400 +0300
|
||||
+++ ./ter-u22n.bdf 2019-07-28 21:08:03.935037000 +0300
|
||||
@@ -15523,4 +15523,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+2000
|
||||
+2000
|
||||
+2000
|
||||
+2000
|
||||
@@ -16509,4 +16509,4 @@
|
||||
-0100
|
||||
-0200
|
||||
-0400
|
||||
-0000
|
||||
+2100
|
||||
+2200
|
||||
+2400
|
||||
+2000
|
||||
@@ -17060,4 +17060,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+2000
|
||||
+2000
|
||||
+2000
|
||||
+2000
|
||||
@@ -17118,4 +17118,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+2000
|
||||
+2000
|
||||
+2000
|
||||
+2000
|
||||
@@ -17176,5 +17176,5 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-E080
|
||||
+E000
|
||||
+2000
|
||||
+2000
|
||||
+2000
|
||||
+2080
|
||||
--- ./ter-u24b.bdf.orig 2019-07-28 21:07:37.773791100 +0300
|
||||
+++ ./ter-u24b.bdf 2019-07-28 21:08:04.293837700 +0300
|
||||
@@ -16592,4 +16592,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
@@ -17646,4 +17646,4 @@
|
||||
-0180
|
||||
-0300
|
||||
-0600
|
||||
-0000
|
||||
+3180
|
||||
+3300
|
||||
+3600
|
||||
+3000
|
||||
@@ -18235,4 +18235,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
@@ -18297,4 +18297,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
@@ -18359,6 +18359,6 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-7060
|
||||
-70C0
|
||||
+7000
|
||||
+7000
|
||||
+3000
|
||||
+3000
|
||||
+3060
|
||||
+30C0
|
||||
--- ./ter-u24n.bdf.orig 2019-07-28 21:07:37.648990900 +0300
|
||||
+++ ./ter-u24n.bdf 2019-07-28 21:08:04.169037400 +0300
|
||||
@@ -16592,4 +16592,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+2000
|
||||
+2000
|
||||
+2000
|
||||
+2000
|
||||
@@ -17646,4 +17646,4 @@
|
||||
-0100
|
||||
-0200
|
||||
-0400
|
||||
-0000
|
||||
+2100
|
||||
+2200
|
||||
+2400
|
||||
+2000
|
||||
@@ -18235,4 +18235,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+2000
|
||||
+2000
|
||||
+2000
|
||||
+2000
|
||||
@@ -18297,4 +18297,4 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
+4000
|
||||
@@ -18359,5 +18359,5 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-E040
|
||||
+6000
|
||||
+6000
|
||||
+2000
|
||||
+2000
|
||||
+2040
|
||||
--- ./ter-u28b.bdf.orig 2019-07-28 21:07:38.038991500 +0300
|
||||
+++ ./ter-u28b.bdf 2019-07-28 21:08:04.559038100 +0300
|
||||
@@ -18728,5 +18728,5 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
@@ -19918,5 +19918,5 @@
|
||||
-0000
|
||||
-01C0
|
||||
-0380
|
||||
-0700
|
||||
-0000
|
||||
+3000
|
||||
+31C0
|
||||
+3380
|
||||
+3700
|
||||
+3000
|
||||
@@ -20583,5 +20583,5 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
@@ -20653,5 +20653,5 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
@@ -20723,7 +20723,7 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-F070
|
||||
-F0E0
|
||||
+F000
|
||||
+F000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3070
|
||||
+30E0
|
||||
--- ./ter-u28n.bdf.orig 2019-07-28 21:07:37.914191300 +0300
|
||||
+++ ./ter-u28n.bdf 2019-07-28 21:08:04.418637900 +0300
|
||||
@@ -18728,5 +18728,5 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
@@ -19918,5 +19918,5 @@
|
||||
-0000
|
||||
-00C0
|
||||
-0180
|
||||
-0300
|
||||
-0000
|
||||
+3000
|
||||
+30C0
|
||||
+3180
|
||||
+3300
|
||||
+3000
|
||||
@@ -20583,5 +20583,5 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
@@ -20653,5 +20653,5 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
+6000
|
||||
@@ -20723,7 +20723,7 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-F030
|
||||
-F060
|
||||
+F000
|
||||
+F000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3030
|
||||
+3060
|
||||
--- ./ter-u32b.bdf.orig 2019-07-28 21:07:38.335392100 +0300
|
||||
+++ ./ter-u32b.bdf 2019-07-28 21:08:04.855438600 +0300
|
||||
@@ -20866,6 +20866,6 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+3800
|
||||
+3800
|
||||
+3800
|
||||
+3800
|
||||
+3800
|
||||
+3800
|
||||
@@ -22192,6 +22192,6 @@
|
||||
-0070
|
||||
-00E0
|
||||
-01C0
|
||||
-0380
|
||||
-0000
|
||||
-0000
|
||||
+3838
|
||||
+3870
|
||||
+38E0
|
||||
+39C0
|
||||
+3800
|
||||
+3800
|
||||
@@ -22933,6 +22933,6 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+3800
|
||||
+3800
|
||||
+3800
|
||||
+3800
|
||||
+3800
|
||||
+3800
|
||||
@@ -23011,6 +23011,6 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+7000
|
||||
+7000
|
||||
+7000
|
||||
+7000
|
||||
+7000
|
||||
+7000
|
||||
@@ -23089,8 +23089,8 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-F81C
|
||||
-F838
|
||||
+F800
|
||||
+F800
|
||||
+3800
|
||||
+3800
|
||||
+3800
|
||||
+3800
|
||||
+381C
|
||||
+3838
|
||||
--- ./ter-u32n.bdf.orig 2019-07-28 21:07:38.194991800 +0300
|
||||
+++ ./ter-u32n.bdf 2019-07-28 21:08:04.699438400 +0300
|
||||
@@ -20866,6 +20866,6 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+1800
|
||||
+1800
|
||||
+1800
|
||||
+1800
|
||||
+1800
|
||||
+1800
|
||||
@@ -22192,6 +22192,6 @@
|
||||
-0070
|
||||
-00E0
|
||||
-01C0
|
||||
-0380
|
||||
-0000
|
||||
-0000
|
||||
+1838
|
||||
+1870
|
||||
+18E0
|
||||
+19C0
|
||||
+1800
|
||||
+1800
|
||||
@@ -22933,6 +22933,6 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+1800
|
||||
+1800
|
||||
+1800
|
||||
+1800
|
||||
+1800
|
||||
+1800
|
||||
@@ -23011,6 +23011,6 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
+3000
|
||||
@@ -23089,8 +23089,8 @@
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-0000
|
||||
-781C
|
||||
-7838
|
||||
+7800
|
||||
+7800
|
||||
+1800
|
||||
+1800
|
||||
+1800
|
||||
+1800
|
||||
+181C
|
||||
+1838
|
||||
--- ./dup/xos4-2.dup.orig 2019-03-13 11:25:47.071547400 +0200
|
||||
+++ ./dup/xos4-2.dup 2019-07-28 21:08:05.463839700 +0300
|
||||
@@ -107 +107 @@
|
||||
-0138 043A
|
||||
+006B 043A
|
2983
alt/ll2.diff
Normal file
2983
alt/ll2.diff
Normal file
File diff suppressed because it is too large
Load Diff
236
alt/td1.diff
Normal file
236
alt/td1.diff
Normal file
@ -0,0 +1,236 @@
|
||||
--- ./ter-u12b.bdf.orig 2019-07-28 21:07:36.104588100 +0300
|
||||
+++ ./ter-u12b.bdf 2019-07-28 21:07:59.769829700 +0300
|
||||
@@ -1840,3 +1839,0 @@
|
||||
-48
|
||||
-A8
|
||||
-90
|
||||
@@ -1846,0 +1844,3 @@
|
||||
+48
|
||||
+A8
|
||||
+90
|
||||
--- ./ter-u12n.bdf.orig 2019-07-28 21:07:35.995388000 +0300
|
||||
+++ ./ter-u12n.bdf 2019-07-28 21:07:59.676229500 +0300
|
||||
@@ -1840,3 +1839,0 @@
|
||||
-48
|
||||
-A8
|
||||
-90
|
||||
@@ -1846,0 +1844,3 @@
|
||||
+48
|
||||
+A8
|
||||
+90
|
||||
--- ./ter-u14b.bdf.orig 2019-07-28 21:07:36.322988500 +0300
|
||||
+++ ./ter-u14b.bdf 2019-07-28 21:07:59.972630100 +0300
|
||||
@@ -2030,3 +2029,0 @@
|
||||
-73
|
||||
-DB
|
||||
-CE
|
||||
@@ -2037,0 +2035,3 @@
|
||||
+73
|
||||
+DB
|
||||
+CE
|
||||
--- ./ter-u14n.bdf.orig 2019-07-28 21:07:36.213788300 +0300
|
||||
+++ ./ter-u14n.bdf 2019-07-28 21:07:59.879029900 +0300
|
||||
@@ -2030,3 +2029,0 @@
|
||||
-62
|
||||
-92
|
||||
-8C
|
||||
@@ -2037,0 +2035,3 @@
|
||||
+62
|
||||
+92
|
||||
+8C
|
||||
--- ./ter-u14v.bdf.orig 2019-07-28 21:07:36.416588700 +0300
|
||||
+++ ./ter-u14v.bdf 2019-07-28 21:08:00.081830300 +0300
|
||||
@@ -2030,3 +2029,0 @@
|
||||
-73
|
||||
-DB
|
||||
-CE
|
||||
@@ -2037,0 +2035,3 @@
|
||||
+73
|
||||
+DB
|
||||
+CE
|
||||
--- ./ter-u16b.bdf.orig 2019-07-28 21:07:36.634989100 +0300
|
||||
+++ ./ter-u16b.bdf 2019-07-28 21:08:00.284630600 +0300
|
||||
@@ -2220,3 +2219,0 @@
|
||||
-73
|
||||
-DB
|
||||
-CE
|
||||
@@ -2227,0 +2225,3 @@
|
||||
+73
|
||||
+DB
|
||||
+CE
|
||||
--- ./ter-u16n.bdf.orig 2019-07-28 21:07:36.541388900 +0300
|
||||
+++ ./ter-u16n.bdf 2019-07-28 21:08:00.191030500 +0300
|
||||
@@ -2220,3 +2219,0 @@
|
||||
-62
|
||||
-92
|
||||
-8C
|
||||
@@ -2227,0 +2225,3 @@
|
||||
+62
|
||||
+92
|
||||
+8C
|
||||
--- ./ter-u16v.bdf.orig 2019-07-28 21:07:36.759789300 +0300
|
||||
+++ ./ter-u16v.bdf 2019-07-28 21:08:00.378230800 +0300
|
||||
@@ -2220,3 +2219,0 @@
|
||||
-73
|
||||
-DB
|
||||
-CE
|
||||
@@ -2227,0 +2225,3 @@
|
||||
+73
|
||||
+DB
|
||||
+CE
|
||||
--- ./ter-u18b.bdf.orig 2019-07-28 21:07:36.993789700 +0300
|
||||
+++ ./ter-u18b.bdf 2019-07-28 21:08:00.596631200 +0300
|
||||
@@ -2410,4 +2409,0 @@
|
||||
-3980
|
||||
-6D80
|
||||
-6D80
|
||||
-6700
|
||||
@@ -2419,0 +2416,4 @@
|
||||
+3980
|
||||
+6D80
|
||||
+6D80
|
||||
+6700
|
||||
--- ./ter-u18n.bdf.orig 2019-07-28 21:07:36.884589500 +0300
|
||||
+++ ./ter-u18n.bdf 2019-07-28 21:08:00.487431000 +0300
|
||||
@@ -2410,4 +2409,0 @@
|
||||
-3100
|
||||
-4900
|
||||
-4900
|
||||
-4600
|
||||
@@ -2419,0 +2416,4 @@
|
||||
+3100
|
||||
+4900
|
||||
+4900
|
||||
+4600
|
||||
--- ./ter-u20b.bdf.orig 2019-07-28 21:07:37.290190200 +0300
|
||||
+++ ./ter-u20b.bdf 2019-07-28 21:08:00.830631600 +0300
|
||||
@@ -2600,4 +2599,0 @@
|
||||
-3980
|
||||
-6D80
|
||||
-6D80
|
||||
-6700
|
||||
@@ -2610,0 +2607,4 @@
|
||||
+3980
|
||||
+6D80
|
||||
+6D80
|
||||
+6700
|
||||
--- ./ter-u20n.bdf.orig 2019-07-28 21:07:37.102989900 +0300
|
||||
+++ ./ter-u20n.bdf 2019-07-28 21:08:00.721431400 +0300
|
||||
@@ -2600,4 +2599,0 @@
|
||||
-3100
|
||||
-4900
|
||||
-4900
|
||||
-4600
|
||||
@@ -2610,0 +2607,4 @@
|
||||
+3100
|
||||
+4900
|
||||
+4900
|
||||
+4600
|
||||
--- ./ter-u22b.bdf.orig 2019-07-28 21:07:37.524190600 +0300
|
||||
+++ ./ter-u22b.bdf 2019-07-28 21:08:01.064632000 +0300
|
||||
@@ -2790,4 +2789,0 @@
|
||||
-38C0
|
||||
-6CC0
|
||||
-66C0
|
||||
-6380
|
||||
@@ -2800,0 +2797,4 @@
|
||||
+38C0
|
||||
+6CC0
|
||||
+66C0
|
||||
+6380
|
||||
--- ./ter-u22n.bdf.orig 2019-07-28 21:07:37.414990400 +0300
|
||||
+++ ./ter-u22n.bdf 2019-07-28 21:08:00.955431800 +0300
|
||||
@@ -2790,4 +2789,0 @@
|
||||
-3080
|
||||
-4880
|
||||
-4480
|
||||
-4300
|
||||
@@ -2800,0 +2797,4 @@
|
||||
+3080
|
||||
+4880
|
||||
+4480
|
||||
+4300
|
||||
--- ./ter-u24b.bdf.orig 2019-07-28 21:07:37.773791100 +0300
|
||||
+++ ./ter-u24b.bdf 2019-07-28 21:08:01.329832500 +0300
|
||||
@@ -2981,4 +2980,0 @@
|
||||
-3C60
|
||||
-6660
|
||||
-6660
|
||||
-63C0
|
||||
@@ -2992,0 +2989,4 @@
|
||||
+3C60
|
||||
+6660
|
||||
+6660
|
||||
+63C0
|
||||
--- ./ter-u24n.bdf.orig 2019-07-28 21:07:37.648990900 +0300
|
||||
+++ ./ter-u24n.bdf 2019-07-28 21:08:01.189432200 +0300
|
||||
@@ -2981,4 +2980,0 @@
|
||||
-3840
|
||||
-4440
|
||||
-4440
|
||||
-4380
|
||||
@@ -2992,0 +2989,4 @@
|
||||
+3840
|
||||
+4440
|
||||
+4440
|
||||
+4380
|
||||
--- ./ter-u28b.bdf.orig 2019-07-28 21:07:38.038991500 +0300
|
||||
+++ ./ter-u28b.bdf 2019-07-28 21:08:01.595032900 +0300
|
||||
@@ -3361,5 +3360,0 @@
|
||||
-3C30
|
||||
-7E30
|
||||
-6730
|
||||
-63F0
|
||||
-61E0
|
||||
@@ -3374,0 +3370,5 @@
|
||||
+3C30
|
||||
+7E30
|
||||
+6730
|
||||
+63F0
|
||||
+61E0
|
||||
--- ./ter-u28n.bdf.orig 2019-07-28 21:07:37.914191300 +0300
|
||||
+++ ./ter-u28n.bdf 2019-07-28 21:08:01.470232700 +0300
|
||||
@@ -3361,5 +3360,0 @@
|
||||
-3C30
|
||||
-6630
|
||||
-6330
|
||||
-6330
|
||||
-61E0
|
||||
@@ -3374,0 +3370,5 @@
|
||||
+3C30
|
||||
+6630
|
||||
+6330
|
||||
+6330
|
||||
+61E0
|
||||
--- ./ter-u32b.bdf.orig 2019-07-28 21:07:38.335392100 +0300
|
||||
+++ ./ter-u32b.bdf 2019-07-28 21:08:01.891433400 +0300
|
||||
@@ -3743,6 +3742,0 @@
|
||||
-1E1C
|
||||
-3F1C
|
||||
-779C
|
||||
-73DC
|
||||
-71F8
|
||||
-70F0
|
||||
@@ -3757,0 +3752,6 @@
|
||||
+1E1C
|
||||
+3F1C
|
||||
+779C
|
||||
+73DC
|
||||
+71F8
|
||||
+70F0
|
||||
--- ./ter-u32n.bdf.orig 2019-07-28 21:07:38.194991800 +0300
|
||||
+++ ./ter-u32n.bdf 2019-07-28 21:08:01.735433200 +0300
|
||||
@@ -3743,6 +3742,0 @@
|
||||
-0E0C
|
||||
-1F0C
|
||||
-3B8C
|
||||
-31DC
|
||||
-30F8
|
||||
-3070
|
||||
@@ -3757,0 +3752,6 @@
|
||||
+0E0C
|
||||
+1F0C
|
||||
+3B8C
|
||||
+31DC
|
||||
+30F8
|
||||
+3070
|
135
bin/.eslintrc.js
Normal file
135
bin/.eslintrc.js
Normal file
@ -0,0 +1,135 @@
|
||||
module.exports = {
|
||||
"env": {
|
||||
"es6": true,
|
||||
"node": true,
|
||||
"browser": false
|
||||
},
|
||||
"extends": "eslint:recommended",
|
||||
"parserOptions": {
|
||||
"sourceType": "module"
|
||||
},
|
||||
"rules": {
|
||||
"indent": [
|
||||
"error",
|
||||
"tab"
|
||||
],
|
||||
"linebreak-style": [
|
||||
"error",
|
||||
"unix"
|
||||
],
|
||||
"quotes": [
|
||||
"warn",
|
||||
"single"
|
||||
],
|
||||
"semi": [
|
||||
"error",
|
||||
"always"
|
||||
],
|
||||
"curly": [
|
||||
"error",
|
||||
"all"
|
||||
],
|
||||
"brace-style": [
|
||||
"error",
|
||||
"1tbs"
|
||||
],
|
||||
"no-empty" : "warn",
|
||||
"no-unused-vars" : "warn",
|
||||
"no-console": "warn",
|
||||
"consistent-return": "error",
|
||||
"class-methods-use-this": "warn",
|
||||
"eqeqeq": [
|
||||
"error",
|
||||
"always", {
|
||||
"null": "ignore"
|
||||
}
|
||||
],
|
||||
"no-alert": "warn",
|
||||
"no-caller": "error",
|
||||
"no-eval": "error",
|
||||
"no-extend-native": "warn",
|
||||
"no-implicit-coercion": "error",
|
||||
"no-implied-eval": "error",
|
||||
"no-invalid-this": "error",
|
||||
"no-loop-func": "error",
|
||||
"no-new-func": "warn",
|
||||
"no-new-wrappers": "error",
|
||||
"no-proto": "error",
|
||||
"no-return-assign": "warn",
|
||||
"no-return-await": "warn",
|
||||
"no-script-url": "error",
|
||||
"no-self-compare": "error",
|
||||
"no-sequences": "error",
|
||||
"no-throw-literal": "error",
|
||||
"no-unmodified-loop-condition": "warn",
|
||||
"no-unused-expressions": "warn",
|
||||
"no-useless-return": "warn",
|
||||
"no-warning-comments": "warn",
|
||||
"prefer-promise-reject-errors": "warn",
|
||||
"no-label-var": "error",
|
||||
"no-shadow": [
|
||||
"warn", {
|
||||
"builtinGlobals": true,
|
||||
"hoist": "all"
|
||||
}
|
||||
],
|
||||
"no-shadow-restricted-names": "error",
|
||||
"no-undefined": "error",
|
||||
"no-use-before-define": "error",
|
||||
"no-new-require": "error",
|
||||
"no-path-concat": "error",
|
||||
"camelcase": "error",
|
||||
"comma-dangle": [
|
||||
"error",
|
||||
"never"
|
||||
],
|
||||
"eol-last": [
|
||||
"error",
|
||||
"always"
|
||||
],
|
||||
"func-call-spacing": "warn",
|
||||
"lines-around-directive": [
|
||||
"warn",
|
||||
"always"
|
||||
],
|
||||
"max-params": [
|
||||
"warn", {
|
||||
"max": 7
|
||||
}
|
||||
],
|
||||
"max-statements-per-line": [
|
||||
"warn", {
|
||||
"max": 1
|
||||
}
|
||||
],
|
||||
"new-cap": [
|
||||
"error"
|
||||
],
|
||||
"no-array-constructor": "warn",
|
||||
"no-mixed-operators": [
|
||||
"error", {
|
||||
"groups": [
|
||||
["&", "|", "^", "~", "<<", ">>", ">>>"],
|
||||
["==", "!=", "===", "!==", ">", ">=", "<", "<="],
|
||||
["&&", "||"],
|
||||
["in", "instanceof"]
|
||||
],
|
||||
"allowSamePrecedence": false
|
||||
}
|
||||
],
|
||||
"no-trailing-spaces": "warn",
|
||||
"no-unneeded-ternary": "warn",
|
||||
"no-whitespace-before-property": "error",
|
||||
"operator-linebreak": "warn",
|
||||
"semi-spacing": "warn",
|
||||
"no-confusing-arrow": [
|
||||
"error", {
|
||||
"allowParens": true
|
||||
}
|
||||
],
|
||||
"no-duplicate-imports": "warn",
|
||||
"prefer-rest-params": "warn",
|
||||
"prefer-spread": "warn",
|
||||
"no-unsafe-negation": "warn"
|
||||
}
|
||||
};
|
425
bin/.pylintrc
Normal file
425
bin/.pylintrc
Normal file
@ -0,0 +1,425 @@
|
||||
[MASTER]
|
||||
|
||||
# A comma-separated list of package or module names from where C extensions may
|
||||
# be loaded. Extensions are loading into the active Python interpreter and may
|
||||
# run arbitrary code
|
||||
extension-pkg-whitelist=
|
||||
|
||||
# Add files or directories to the blacklist. They should be base names, not
|
||||
# paths.
|
||||
ignore=CVS
|
||||
|
||||
# Add files or directories matching the regex patterns to the blacklist. The
|
||||
# regex matches against base names, not paths.
|
||||
ignore-patterns=
|
||||
|
||||
# Python code to execute, usually for sys.path manipulation such as
|
||||
# pygtk.require().
|
||||
#init-hook=
|
||||
|
||||
# Use multiple processes to speed up Pylint.
|
||||
jobs=4
|
||||
|
||||
# List of plugins (as comma separated values of python modules names) to load,
|
||||
# usually to register additional checkers.
|
||||
load-plugins=
|
||||
|
||||
# Pickle collected data for later comparisons.
|
||||
persistent=yes
|
||||
|
||||
# Specify a configuration file.
|
||||
#rcfile=
|
||||
|
||||
# Allow loading of arbitrary C extensions. Extensions are imported into the
|
||||
# active Python interpreter and may run arbitrary code.
|
||||
unsafe-load-any-extension=no
|
||||
|
||||
|
||||
[MESSAGES CONTROL]
|
||||
|
||||
# Only show warnings with the listed confidence levels. Leave empty to show
|
||||
# all. Valid levels: HIGH, INFERENCE, INFERENCE_FAILURE, UNDEFINED
|
||||
confidence=
|
||||
|
||||
# Disable the message, report, category or checker with the given id(s). You
|
||||
# can either give multiple identifiers separated by comma (,) or put this
|
||||
# option multiple times (only on the command line, not in the configuration
|
||||
# file where it should appear only once).You can also use "--disable=all" to
|
||||
# disable everything first and then reenable specific checks. For example, if
|
||||
# you want to run only the similarities checker, you can use "--disable=all
|
||||
# --enable=similarities". If you want to run only the classes checker, but have
|
||||
# no Warning level messages displayed, use"--disable=all --enable=classes
|
||||
# --disable=W"
|
||||
disable=print-statement,parameter-unpacking,unpacking-in-except,old-raise-syntax,backtick,long-suffix,old-ne-operator,old-octal-literal,import-star-module-level,raw-checker-failed,bad-inline-option,locally-disabled,locally-enabled,file-ignored,suppressed-message,useless-suppression,deprecated-pragma,apply-builtin,basestring-builtin,buffer-builtin,cmp-builtin,coerce-builtin,execfile-builtin,file-builtin,long-builtin,raw_input-builtin,reduce-builtin,standarderror-builtin,unicode-builtin,xrange-builtin,coerce-method,delslice-method,getslice-method,setslice-method,no-absolute-import,old-division,dict-iter-method,dict-view-method,next-method-called,metaclass-assignment,indexing-exception,raising-string,reload-builtin,oct-method,hex-method,nonzero-method,cmp-method,input-builtin,round-builtin,intern-builtin,unichr-builtin,map-builtin-not-iterating,zip-builtin-not-iterating,range-builtin-not-iterating,filter-builtin-not-iterating,using-cmp-argument,eq-without-hash,div-method,idiv-method,rdiv-method,exception-message-attribute,invalid-str-codec,sys-max-int,bad-python3-import,deprecated-string-function,deprecated-str-translate-call,bad-continuation,missing-docstring,redefined-builtin,unnecessary-lambda,too-few-public-methods,too-many-locals,too-many-branches,too-many-statements,broad-except,consider-using-ternary
|
||||
|
||||
# Enable the message, report, category or checker with the given id(s). You can
|
||||
# either give multiple identifier separated by comma (,) or put this option
|
||||
# multiple time (only on the command line, not in the configuration file where
|
||||
# it should appear only once). See also the "--disable" option for examples.
|
||||
enable=
|
||||
|
||||
|
||||
[REPORTS]
|
||||
|
||||
# Python expression which should return a note less than 10 (10 is the highest
|
||||
# note). You have access to the variables errors warning, statement which
|
||||
# respectively contain the number of errors / warnings messages and the total
|
||||
# number of statements analyzed. This is used by the global evaluation report
|
||||
# (RP0004).
|
||||
evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
|
||||
|
||||
# Template used to display messages. This is a python new-style format string
|
||||
# used to format the message information. See doc for all details
|
||||
#msg-template=
|
||||
|
||||
# Set the output format. Available formats are text, parseable, colorized, json
|
||||
# and msvs (visual studio).You can also give a reporter class, eg
|
||||
# mypackage.mymodule.MyReporterClass.
|
||||
output-format=text
|
||||
|
||||
# Tells whether to display a full report or only the messages
|
||||
reports=no
|
||||
|
||||
# Activate the evaluation score.
|
||||
score=no
|
||||
|
||||
|
||||
[REFACTORING]
|
||||
|
||||
# Maximum number of nested blocks for function / method body
|
||||
max-nested-blocks=8
|
||||
|
||||
|
||||
[BASIC]
|
||||
|
||||
# Naming hint for argument names
|
||||
argument-name-hint=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$
|
||||
|
||||
# Regular expression matching correct argument names
|
||||
argument-rgx=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$
|
||||
|
||||
# Naming hint for attribute names
|
||||
attr-name-hint=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$
|
||||
|
||||
# Regular expression matching correct attribute names
|
||||
attr-rgx=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$
|
||||
|
||||
# Bad variable names which should always be refused, separated by a comma
|
||||
bad-names=foo,bar,baz,toto,tutu,tata
|
||||
|
||||
# Naming hint for class attribute names
|
||||
class-attribute-name-hint=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
|
||||
|
||||
# Regular expression matching correct class attribute names
|
||||
class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$
|
||||
|
||||
# Naming hint for class names
|
||||
class-name-hint=[A-Z_][a-zA-Z0-9]+$
|
||||
|
||||
# Regular expression matching correct class names
|
||||
class-rgx=[A-Z_][a-zA-Z0-9]+$
|
||||
|
||||
# Naming hint for constant names
|
||||
const-name-hint=(([A-Z_][A-Z0-9_]*)|(__.*__))$
|
||||
|
||||
# Regular expression matching correct constant names
|
||||
const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$
|
||||
|
||||
# Minimum line length for functions/classes that require docstrings, shorter
|
||||
# ones are exempt.
|
||||
docstring-min-length=-1
|
||||
|
||||
# Naming hint for function names
|
||||
function-name-hint=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$
|
||||
|
||||
# Regular expression matching correct function names
|
||||
function-rgx=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$
|
||||
|
||||
# Good variable names which should always be accepted, separated by a comma
|
||||
good-names=i,j,k,ex,Run,_,s,e,x,y,n
|
||||
|
||||
# Include a hint for the correct naming format with invalid-name
|
||||
include-naming-hint=no
|
||||
|
||||
# Naming hint for inline iteration names
|
||||
inlinevar-name-hint=[A-Za-z_][A-Za-z0-9_]*$
|
||||
|
||||
# Regular expression matching correct inline iteration names
|
||||
inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
|
||||
|
||||
# Naming hint for method names
|
||||
method-name-hint=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$
|
||||
|
||||
# Regular expression matching correct method names
|
||||
method-rgx=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$
|
||||
|
||||
# Naming hint for module names
|
||||
module-name-hint=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
|
||||
|
||||
# Regular expression matching correct module names
|
||||
module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
|
||||
|
||||
# Colon-delimited sets of names that determine each other's naming style when
|
||||
# the name regexes allow several styles.
|
||||
name-group=
|
||||
|
||||
# Regular expression which should only match function or class names that do
|
||||
# not require a docstring.
|
||||
no-docstring-rgx=^_
|
||||
|
||||
# List of decorators that produce properties, such as abc.abstractproperty. Add
|
||||
# to this list to register other decorators that produce valid properties.
|
||||
property-classes=abc.abstractproperty
|
||||
|
||||
# Naming hint for variable names
|
||||
variable-name-hint=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$
|
||||
|
||||
# Regular expression matching correct variable names
|
||||
variable-rgx=(([a-z][a-z0-9_]{2,30})|(_[a-z0-9_]*))$
|
||||
|
||||
|
||||
[FORMAT]
|
||||
|
||||
# Expected format of line ending, e.g. empty (any line ending), LF or CRLF.
|
||||
expected-line-ending-format=LF
|
||||
|
||||
# Regexp for a line that is allowed to be longer than the limit.
|
||||
ignore-long-lines=^\s*(# )?<?https?://\S+>?$
|
||||
|
||||
# Number of spaces of indent required inside a hanging or continued line.
|
||||
indent-after-paren=4
|
||||
|
||||
# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
|
||||
# tab).
|
||||
indent-string='\t'
|
||||
|
||||
# Maximum number of characters on a single line.
|
||||
max-line-length=120
|
||||
|
||||
# Maximum number of lines in a module
|
||||
max-module-lines=1000
|
||||
|
||||
# List of optional constructs for which whitespace checking is disabled. `dict-
|
||||
# separator` is used to allow tabulation in dicts, etc.: {1 : 1,\n222: 2}.
|
||||
# `trailing-comma` allows a space between comma and closing bracket: (a, ).
|
||||
# `empty-line` allows space-only lines.
|
||||
no-space-check=trailing-comma,dict-separator
|
||||
|
||||
# Allow the body of a class to be on the same line as the declaration if body
|
||||
# contains single statement.
|
||||
single-line-class-stmt=no
|
||||
|
||||
# Allow the body of an if to be on the same line as the test if there is no
|
||||
# else.
|
||||
single-line-if-stmt=no
|
||||
|
||||
|
||||
[LOGGING]
|
||||
|
||||
# Logging modules to check that the string format arguments are in logging
|
||||
# function parameter format
|
||||
logging-modules=logging
|
||||
|
||||
|
||||
[MISCELLANEOUS]
|
||||
|
||||
# List of note tags to take in consideration, separated by a comma.
|
||||
notes=FIXME,XXX,TODO
|
||||
|
||||
|
||||
[SIMILARITIES]
|
||||
|
||||
# Ignore comments when computing similarities.
|
||||
ignore-comments=yes
|
||||
|
||||
# Ignore docstrings when computing similarities.
|
||||
ignore-docstrings=yes
|
||||
|
||||
# Ignore imports when computing similarities.
|
||||
ignore-imports=no
|
||||
|
||||
# Minimum lines number of a similarity.
|
||||
min-similarity-lines=4
|
||||
|
||||
|
||||
[SPELLING]
|
||||
|
||||
# Spelling dictionary name. Available dictionaries: none. To make it working
|
||||
# install python-enchant package.
|
||||
spelling-dict=
|
||||
|
||||
# List of comma separated words that should not be checked.
|
||||
spelling-ignore-words=
|
||||
|
||||
# A path to a file that contains private dictionary; one word per line.
|
||||
spelling-private-dict-file=
|
||||
|
||||
# Tells whether to store unknown words to indicated private dictionary in
|
||||
# --spelling-private-dict-file option instead of raising a message.
|
||||
spelling-store-unknown-words=no
|
||||
|
||||
|
||||
[TYPECHECK]
|
||||
|
||||
# List of decorators that produce context managers, such as
|
||||
# contextlib.contextmanager. Add to this list to register other decorators that
|
||||
# produce valid context managers.
|
||||
contextmanager-decorators=contextlib.contextmanager
|
||||
|
||||
# List of members which are set dynamically and missed by pylint inference
|
||||
# system, and so shouldn't trigger E1101 when accessed. Python regular
|
||||
# expressions are accepted.
|
||||
generated-members=
|
||||
|
||||
# Tells whether missing members accessed in mixin class should be ignored. A
|
||||
# mixin class is detected if its name ends with "mixin" (case insensitive).
|
||||
ignore-mixin-members=yes
|
||||
|
||||
# This flag controls whether pylint should warn about no-member and similar
|
||||
# checks whenever an opaque object is returned when inferring. The inference
|
||||
# can return multiple potential results while evaluating a Python object, but
|
||||
# some branches might not be evaluated, which results in partial inference. In
|
||||
# that case, it might be useful to still emit no-member and other checks for
|
||||
# the rest of the inferred objects.
|
||||
ignore-on-opaque-inference=yes
|
||||
|
||||
# List of class names for which member attributes should not be checked (useful
|
||||
# for classes with dynamically set attributes). This supports the use of
|
||||
# qualified names.
|
||||
ignored-classes=optparse.Values,thread._local,_thread._local
|
||||
|
||||
# List of module names for which member attributes should not be checked
|
||||
# (useful for modules/projects where namespaces are manipulated during runtime
|
||||
# and thus existing member attributes cannot be deduced by static analysis. It
|
||||
# supports qualified module names, as well as Unix pattern matching.
|
||||
ignored-modules=
|
||||
|
||||
# Show a hint with possible names when a member name was not found. The aspect
|
||||
# of finding the hint is based on edit distance.
|
||||
missing-member-hint=yes
|
||||
|
||||
# The minimum edit distance a name should have in order to be considered a
|
||||
# similar match for a missing member name.
|
||||
missing-member-hint-distance=1
|
||||
|
||||
# The total number of similar names that should be taken in consideration when
|
||||
# showing a hint for a missing member.
|
||||
missing-member-max-choices=1
|
||||
|
||||
|
||||
[VARIABLES]
|
||||
|
||||
# List of additional names supposed to be defined in builtins. Remember that
|
||||
# you should avoid to define new builtins when possible.
|
||||
additional-builtins=
|
||||
|
||||
# Tells whether unused global variables should be treated as a violation.
|
||||
allow-global-unused-variables=yes
|
||||
|
||||
# List of strings which can identify a callback function by name. A callback
|
||||
# name must start or end with one of those strings.
|
||||
callbacks=cb_,_cb
|
||||
|
||||
# A regular expression matching the name of dummy variables (i.e. expectedly
|
||||
# not used).
|
||||
dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_
|
||||
|
||||
# Argument names that match this expression will be ignored. Default to name
|
||||
# with leading underscore
|
||||
ignored-argument-names=_.*|^ignored_|^unused_
|
||||
|
||||
# Tells whether we should check for unused import in __init__ files.
|
||||
init-import=no
|
||||
|
||||
# List of qualified module names which can have objects that can redefine
|
||||
# builtins.
|
||||
redefining-builtins-modules=six.moves,future.builtins
|
||||
|
||||
|
||||
[CLASSES]
|
||||
|
||||
# List of method names used to declare (i.e. assign) instance attributes.
|
||||
defining-attr-methods=__init__,__new__,setUp
|
||||
|
||||
# List of member names, which should be excluded from the protected access
|
||||
# warning.
|
||||
exclude-protected=_asdict,_fields,_replace,_source,_make
|
||||
|
||||
# List of valid names for the first argument in a class method.
|
||||
valid-classmethod-first-arg=cls
|
||||
|
||||
# List of valid names for the first argument in a metaclass class method.
|
||||
valid-metaclass-classmethod-first-arg=mcs
|
||||
|
||||
|
||||
[DESIGN]
|
||||
|
||||
# Maximum number of arguments for function / method
|
||||
max-args=5
|
||||
|
||||
# Maximum number of attributes for a class (see R0902).
|
||||
max-attributes=10
|
||||
|
||||
# Maximum number of boolean expressions in a if statement
|
||||
max-bool-expr=5
|
||||
|
||||
# Maximum number of branch for function / method body
|
||||
max-branches=12
|
||||
|
||||
# Maximum number of locals for function / method body
|
||||
max-locals=15
|
||||
|
||||
# Maximum number of parents for a class (see R0901).
|
||||
max-parents=7
|
||||
|
||||
# Maximum number of public methods for a class (see R0904).
|
||||
max-public-methods=20
|
||||
|
||||
# Maximum number of return / yield for function / method body
|
||||
max-returns=6
|
||||
|
||||
# Maximum number of statements in function / method body
|
||||
max-statements=50
|
||||
|
||||
# Minimum number of public methods for a class (see R0903).
|
||||
min-public-methods=2
|
||||
|
||||
|
||||
[IMPORTS]
|
||||
|
||||
# Allow wildcard imports from modules that define __all__.
|
||||
allow-wildcard-with-all=no
|
||||
|
||||
# Analyse import fallback blocks. This can be used to support both Python 2 and
|
||||
# 3 compatible code, which means that the block might have code that exists
|
||||
# only in one or another interpreter, leading to false positives when analysed.
|
||||
analyse-fallback-blocks=no
|
||||
|
||||
# Deprecated modules which should not be used, separated by a comma
|
||||
deprecated-modules=optparse,tkinter.tix
|
||||
|
||||
# Create a graph of external dependencies in the given file (report RP0402 must
|
||||
# not be disabled)
|
||||
ext-import-graph=
|
||||
|
||||
# Create a graph of every (i.e. internal and external) dependencies in the
|
||||
# given file (report RP0402 must not be disabled)
|
||||
import-graph=
|
||||
|
||||
# Create a graph of internal dependencies in the given file (report RP0402 must
|
||||
# not be disabled)
|
||||
int-import-graph=
|
||||
|
||||
# Force import order to recognize a module as part of the standard
|
||||
# compatibility libraries.
|
||||
known-standard-library=
|
||||
|
||||
# Force import order to recognize a module as part of a third party library.
|
||||
known-third-party=enchant
|
||||
|
||||
|
||||
[EXCEPTIONS]
|
||||
|
||||
# Exceptions that will emit a warning when being caught. Defaults to
|
||||
# "Exception"
|
||||
overgeneral-exceptions=Exception
|
374
bin/bdf.js
Normal file
374
bin/bdf.js
Normal file
@ -0,0 +1,374 @@
|
||||
//
|
||||
// Copyright (c) 2018 Dimitar Toshkov Zhekov <dimitar.zhekov@gmail.com>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of
|
||||
// the License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
|
||||
'use strict';
|
||||
|
||||
const fnutil = require('./fnutil.js');
|
||||
|
||||
|
||||
const WIDTH_MAX = 127;
|
||||
const HEIGHT_MAX = 255;
|
||||
const SWIDTH_MAX = 32000;
|
||||
|
||||
class Width {
|
||||
constructor(x, y) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
static _parse(name, value, limitX, limitY) {
|
||||
const words = fnutil.splitWords(name, value, 2);
|
||||
|
||||
return new Width(fnutil.parseDec(name + ' X', words[0], -limitX, limitX),
|
||||
fnutil.parseDec(name + ' Y', words[1], -limitY, limitY));
|
||||
}
|
||||
|
||||
static parseS(value) {
|
||||
return Width._parse('SWIDTH', value, SWIDTH_MAX, SWIDTH_MAX);
|
||||
}
|
||||
|
||||
static parseD(value) {
|
||||
return Width._parse('DWIDTH', value, WIDTH_MAX, HEIGHT_MAX);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class BBX {
|
||||
constructor(width, height, xoff, yoff) {
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
this.xoff = xoff;
|
||||
this.yoff = yoff;
|
||||
}
|
||||
|
||||
static parse(name, value) {
|
||||
const words = fnutil.splitWords(name, value, 4);
|
||||
|
||||
return new BBX(fnutil.parseDec('width', words[0], 1, WIDTH_MAX),
|
||||
fnutil.parseDec('height', words[1], 1, HEIGHT_MAX),
|
||||
fnutil.parseDec('bbxoff', words[2], -WIDTH_MAX, WIDTH_MAX),
|
||||
fnutil.parseDec('bbyoff', words[3], -WIDTH_MAX, WIDTH_MAX));
|
||||
}
|
||||
|
||||
rowSize() {
|
||||
return (this.width + 7) >> 3;
|
||||
}
|
||||
|
||||
toString() {
|
||||
return `${this.width} ${this.height} ${this.xoff} ${this.yoff}`;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class Props {
|
||||
constructor() {
|
||||
this.names = [];
|
||||
this.values = [];
|
||||
}
|
||||
|
||||
add(name, value) {
|
||||
this.names.push(name);
|
||||
this.values.push(value);
|
||||
}
|
||||
|
||||
clone() {
|
||||
let props = new Props();
|
||||
|
||||
props.names = this.names.slice();
|
||||
props.values = this.values.slice();
|
||||
return props;
|
||||
}
|
||||
|
||||
forEach(callback) {
|
||||
for (let index = 0; index < this.names.length; index++) {
|
||||
callback(this.names[index], this.values[index]);
|
||||
}
|
||||
}
|
||||
|
||||
get(name) {
|
||||
return this.values[this.names.indexOf(name)];
|
||||
}
|
||||
|
||||
parse(line, name, callback) {
|
||||
if (line === null || !line.startsWith(name)) {
|
||||
throw new Error(name + ' expected');
|
||||
}
|
||||
|
||||
let value = line.substring(name.length).trimLeft();
|
||||
|
||||
this.add(name, value);
|
||||
return callback == null ? value : callback(name, value);
|
||||
}
|
||||
|
||||
push(line) {
|
||||
this.add('', line);
|
||||
}
|
||||
|
||||
set(name, value) {
|
||||
let index = this.names.indexOf(name);
|
||||
|
||||
if (index !== -1) {
|
||||
this.values[index] = value;
|
||||
} else {
|
||||
this.add(name, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class Base {
|
||||
constructor() {
|
||||
this.props = new Props();
|
||||
this.bbx = null;
|
||||
this.finis = [];
|
||||
}
|
||||
|
||||
readFinish(input, endText) {
|
||||
if (this.readNext(input, this.finis) !== endText) {
|
||||
throw new Error(endText + ' expected');
|
||||
}
|
||||
this.finis.push(endText);
|
||||
}
|
||||
|
||||
readNext(input, comout = this.props) {
|
||||
return input.readLines(line => {
|
||||
if (line.startsWith('COMMENT')) {
|
||||
comout.push(line);
|
||||
return null;
|
||||
}
|
||||
return line;
|
||||
});
|
||||
}
|
||||
|
||||
readProp(input, name, callback) {
|
||||
return this.props.parse(this.readNext(input), name, callback);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class Char extends Base {
|
||||
constructor() {
|
||||
super();
|
||||
this.code = -1;
|
||||
this.swidth = null;
|
||||
this.dwidth = null;
|
||||
this.data = null;
|
||||
}
|
||||
|
||||
static bitmap(data, rowSize) {
|
||||
const bitmap = data.toString('hex').toUpperCase();
|
||||
const regex = new RegExp(`.{${rowSize << 1}}`, 'g');
|
||||
return bitmap.replace(regex, '$&\n');
|
||||
}
|
||||
|
||||
_read(input) {
|
||||
// HEADER
|
||||
this.readProp(input, 'STARTCHAR');
|
||||
this.code = this.readProp(input, 'ENCODING', fnutil.parseDec);
|
||||
this.swidth = this.readProp(input, 'SWIDTH', (name, value) => Width.parseS(value));
|
||||
this.dwidth = this.readProp(input, 'DWIDTH', (name, value) => Width.parseD(value));
|
||||
this.bbx = this.readProp(input, 'BBX', BBX.parse);
|
||||
|
||||
let line = this.readNext(input);
|
||||
|
||||
if (line !== null && line.startsWith('ATTRIBUTES')) {
|
||||
this.props.parse(line, 'ATTRIBUTES');
|
||||
line = this.readNext(input);
|
||||
}
|
||||
|
||||
// BITMAP
|
||||
if (this.props.parse(line, 'BITMAP') !== '') {
|
||||
throw new Error('BITMAP expected');
|
||||
}
|
||||
|
||||
const rowLen = this.bbx.rowSize() * 2;
|
||||
let bitmap = '';
|
||||
|
||||
for (let y = 0; y < this.bbx.height; y++) {
|
||||
line = this.readNext(input);
|
||||
|
||||
if (line === null) {
|
||||
throw new Error('bitmap data expected');
|
||||
}
|
||||
if (line.length === rowLen) {
|
||||
bitmap += line;
|
||||
} else {
|
||||
throw new Error('invalid bitmap line length');
|
||||
}
|
||||
}
|
||||
|
||||
// FINAL
|
||||
this.readFinish(input, 'ENDCHAR');
|
||||
|
||||
if (bitmap.match(/^[\dA-Fa-f]+$/) != null) {
|
||||
this.data = Buffer.from(bitmap, 'hex');
|
||||
} else {
|
||||
throw new Error('invalid BITMAP data characters');
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
static read(input) {
|
||||
return (new Char())._read(input);
|
||||
}
|
||||
|
||||
write(output) {
|
||||
let header = '';
|
||||
|
||||
this.props.forEach((name, value) => {
|
||||
header += (name + ' ' + value).trim() + '\n';
|
||||
});
|
||||
output.writeLine(header + Char.bitmap(this.data, this.bbx.rowSize()) + this.finis.join('\n'));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const XLFD = {
|
||||
FOUNDRY: 1,
|
||||
FAMILY_NAME: 2,
|
||||
WEIGHT_NAME: 3,
|
||||
SLANT: 4,
|
||||
SETWIDTH_NAME: 5,
|
||||
ADD_STYLE_NAME: 6,
|
||||
PIXEL_SIZE: 7,
|
||||
POINT_SIZE: 8,
|
||||
RESOLUTION_X: 9,
|
||||
RESOLUTION_Y: 10,
|
||||
SPACING: 11,
|
||||
AVERAGE_WIDTH: 12,
|
||||
CHARSET_REGISTRY: 13,
|
||||
CHARSET_ENCODING: 14
|
||||
};
|
||||
|
||||
const CHARS_MAX = 65535;
|
||||
|
||||
class Font extends Base {
|
||||
constructor() {
|
||||
super();
|
||||
this.chars = [];
|
||||
this.defaultCode = -1;
|
||||
}
|
||||
|
||||
getAscent() {
|
||||
let ascent = this.props.get('FONT_ASCENT');
|
||||
|
||||
if (ascent != null) {
|
||||
return fnutil.parseDec('FONT_ASCENT', ascent, -HEIGHT_MAX, HEIGHT_MAX);
|
||||
}
|
||||
return this.bbx.height + this.bbx.yoff;
|
||||
}
|
||||
|
||||
getBold() {
|
||||
return Number(this.xlfd[XLFD.WEIGHT_NAME].toLowerCase().includes('bold'));
|
||||
}
|
||||
|
||||
getItalic() {
|
||||
return Number(this.xlfd[XLFD.SLANT].match(/^[IO]/) != null);
|
||||
}
|
||||
|
||||
_read(input) {
|
||||
// HEADER
|
||||
let line = input.readLines(Font.skipEmpty);
|
||||
|
||||
if (this.props.parse(line, 'STARTFONT') !== '2.1') {
|
||||
throw new Error('STARTFONT 2.1 expected');
|
||||
}
|
||||
this.xlfd = this.readProp(input, 'FONT', (name, value) => value.split('-', 16));
|
||||
|
||||
if (this.xlfd.length !== 15 || this.xlfd[0] !== '') {
|
||||
throw new Error('non-XLFD font names are not supported');
|
||||
}
|
||||
this.readProp(input, 'SIZE');
|
||||
this.bbx = this.readProp(input, 'FONTBOUNDINGBOX', BBX.parse);
|
||||
line = this.readNext(input);
|
||||
|
||||
if (line !== null && line.startsWith('STARTPROPERTIES')) {
|
||||
const numProps = this.props.parse(line, 'STARTPROPERTIES', fnutil.parseDec);
|
||||
|
||||
for (let i = 0; i < numProps; i++) {
|
||||
line = this.readNext(input);
|
||||
|
||||
if (line === null) {
|
||||
throw new Error('property expected');
|
||||
}
|
||||
|
||||
let match = line.match(/^(\w+)\s+([-\d"].*)$/);
|
||||
|
||||
if (match == null) {
|
||||
throw new Error('invalid property format');
|
||||
}
|
||||
|
||||
let name = match[1];
|
||||
let value = match[2];
|
||||
|
||||
if (name === 'DEFAULT_CHAR') {
|
||||
this.defaultCode = fnutil.parseDec(name, value);
|
||||
}
|
||||
|
||||
this.props.add(name, value);
|
||||
}
|
||||
|
||||
if (this.readProp(input, 'ENDPROPERTIES') !== '') {
|
||||
throw new Error('ENDPROPERTIES expected');
|
||||
}
|
||||
line = this.readNext(input);
|
||||
}
|
||||
|
||||
// GLYPHS
|
||||
const numChars = this.props.parse(line, 'CHARS', (name, value) => fnutil.parseDec(name, value, 1, CHARS_MAX));
|
||||
|
||||
for (let i = 0; i < numChars; i++) {
|
||||
this.chars.push(Char.read(input));
|
||||
}
|
||||
|
||||
if (this.defaultCode !== -1 && this.chars.find(char => char.code === this.defaultCode) === -1) {
|
||||
throw new Error('invalid DEFAULT_CHAR');
|
||||
}
|
||||
|
||||
// FINAL
|
||||
this.readFinish(input, 'ENDFONT');
|
||||
|
||||
if (input.readLines(Font.skipEmpty) != null) {
|
||||
throw new Error('garbage after ENDFONT');
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
static read(input) {
|
||||
return (new Font())._read(input);
|
||||
}
|
||||
|
||||
static skipEmpty(line) {
|
||||
return line.length > 0 ? line : null;
|
||||
}
|
||||
|
||||
write(output) {
|
||||
this.props.forEach((name, value) => output.writeProp(name, value));
|
||||
this.chars.forEach(char => char.write(output));
|
||||
output.writeLine(this.finis.join('\n'));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module.exports = Object.freeze({
|
||||
WIDTH_MAX,
|
||||
HEIGHT_MAX,
|
||||
SWIDTH_MAX,
|
||||
Width,
|
||||
BBX,
|
||||
Char,
|
||||
XLFD,
|
||||
CHARS_MAX,
|
||||
Font
|
||||
});
|
355
bin/bdf.py
Normal file
355
bin/bdf.py
Normal file
@ -0,0 +1,355 @@
|
||||
#
|
||||
# Copyright (c) 2018 Dimitar Toshkov Zhekov <dimitar.zhekov@gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 2 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
|
||||
import re
|
||||
import codecs
|
||||
from enum import IntEnum, unique
|
||||
|
||||
import fnutil
|
||||
|
||||
|
||||
WIDTH_MAX = 127
|
||||
HEIGHT_MAX = 255
|
||||
SWIDTH_MAX = 32000
|
||||
|
||||
class Width:
|
||||
def __init__(self, x, y):
|
||||
self.x = x
|
||||
self.y = y
|
||||
|
||||
|
||||
@staticmethod
|
||||
def _parse(name, value, limit_x, limit_y):
|
||||
words = fnutil.split_words(name, value, 2)
|
||||
return Width(fnutil.parse_dec('width x', words[0], -limit_x, limit_x),
|
||||
fnutil.parse_dec('width y', words[1], -limit_y, limit_y))
|
||||
|
||||
|
||||
@staticmethod
|
||||
def parse_s(value):
|
||||
return Width._parse('SWIDTH', value, SWIDTH_MAX, SWIDTH_MAX)
|
||||
|
||||
|
||||
@staticmethod
|
||||
def parse_d(value):
|
||||
return Width._parse('DWIDTH', value, WIDTH_MAX, HEIGHT_MAX)
|
||||
|
||||
|
||||
OFFSET_MIN = -128
|
||||
OFFSET_MAX = 127
|
||||
|
||||
class BBX:
|
||||
def __init__(self, width, height, xoff, yoff):
|
||||
self.width = width
|
||||
self.height = height
|
||||
self.xoff = xoff
|
||||
self.yoff = yoff
|
||||
|
||||
|
||||
@staticmethod
|
||||
def parse(name, value):
|
||||
words = fnutil.split_words(name, value, 4)
|
||||
return BBX(fnutil.parse_dec('width', words[0], 1, WIDTH_MAX),
|
||||
fnutil.parse_dec('height', words[1], 1, HEIGHT_MAX),
|
||||
fnutil.parse_dec('bbxoff', words[2], -WIDTH_MAX, WIDTH_MAX),
|
||||
fnutil.parse_dec('bbyoff', words[3], -WIDTH_MAX, WIDTH_MAX))
|
||||
|
||||
|
||||
def row_size(self):
|
||||
return (self.width + 7) >> 3
|
||||
|
||||
|
||||
def __str__(self):
|
||||
return '%d %d %d %d' % (self.width, self.height, self.xoff, self.yoff)
|
||||
|
||||
|
||||
class Props:
|
||||
def __init__(self):
|
||||
self.names = []
|
||||
self.values = []
|
||||
|
||||
|
||||
def add(self, name, value):
|
||||
self.names.append(name)
|
||||
self.values.append(value)
|
||||
|
||||
|
||||
def clone(self):
|
||||
props = Props()
|
||||
props.names = self.names[:]
|
||||
props.values = self.values[:]
|
||||
return props
|
||||
|
||||
|
||||
def get(self, name):
|
||||
try:
|
||||
return self.values[self.names.index(name)]
|
||||
except ValueError:
|
||||
return None
|
||||
|
||||
|
||||
class Iter:
|
||||
def __init__(self, props):
|
||||
self.index = 0
|
||||
self.props = props
|
||||
|
||||
|
||||
def __next__(self):
|
||||
if self.index == len(self.props.names):
|
||||
raise StopIteration
|
||||
|
||||
result = (self.props.names[self.index], self.props.values[self.index])
|
||||
self.index += 1
|
||||
return result
|
||||
|
||||
|
||||
def __iter__(self):
|
||||
return Props.Iter(self)
|
||||
|
||||
|
||||
def parse(self, line, name, callback=None):
|
||||
if not line or not line.startswith(bytes(name, 'ascii')):
|
||||
raise Exception(name + ' expected')
|
||||
|
||||
value = line[len(name):].lstrip()
|
||||
self.add(name, value)
|
||||
return value if callback is None else callback(name, value)
|
||||
|
||||
|
||||
def set(self, name, value):
|
||||
try:
|
||||
self.values[self.names.index(name)] = value
|
||||
except ValueError:
|
||||
self.add(name, value)
|
||||
|
||||
|
||||
class Base:
|
||||
def __init__(self):
|
||||
self.props = Props()
|
||||
self.bbx = None
|
||||
self.finis = []
|
||||
|
||||
|
||||
def keep_comments(self, line):
|
||||
if not line.startswith(b'COMMENT'):
|
||||
return line
|
||||
|
||||
self.props.add('', line)
|
||||
return None
|
||||
|
||||
|
||||
def keep_finishes(self, line):
|
||||
self.finis.append(line)
|
||||
return None if line.startswith(b'COMMENT') else line
|
||||
|
||||
|
||||
class Char(Base):
|
||||
def __init__(self):
|
||||
Base.__init__(self)
|
||||
self.code = -1
|
||||
self.swidth = None
|
||||
self.dwidth = None
|
||||
self.data = None
|
||||
|
||||
|
||||
@staticmethod
|
||||
def bitmap(data, row_size):
|
||||
bitmap = ''
|
||||
|
||||
for index in range(0, len(data), row_size):
|
||||
bitmap += data[index : index + row_size].hex() + '\n'
|
||||
|
||||
return bytes(bitmap, 'ascii').upper()
|
||||
|
||||
|
||||
def _read(self, input):
|
||||
# HEADER
|
||||
read_next = lambda: input.read_lines(lambda line: self.keep_comments(line))
|
||||
read_prop = lambda name, callback=None: self.props.parse(read_next(), name, callback)
|
||||
|
||||
read_prop('STARTCHAR')
|
||||
self.code = read_prop('ENCODING', fnutil.parse_dec)
|
||||
self.swidth = read_prop('SWIDTH', lambda _, value: Width.parse_s(value))
|
||||
self.dwidth = read_prop('DWIDTH', lambda _, value: Width.parse_d(value))
|
||||
self.bbx = read_prop('BBX', BBX.parse)
|
||||
line = read_next()
|
||||
|
||||
if line and line.startswith(b'ATTRIBUTES'):
|
||||
self.props.parse(line, 'ATTRIBUTES')
|
||||
line = read_next()
|
||||
|
||||
# BITMAP
|
||||
if self.props.parse(line, 'BITMAP') != b'':
|
||||
raise Exception('BITMAP expected')
|
||||
|
||||
row_len = self.bbx.row_size() * 2
|
||||
bitmap = b''
|
||||
|
||||
for _ in range(0, self.bbx.height):
|
||||
line = read_next()
|
||||
|
||||
if not line:
|
||||
raise Exception('bitmap data expected')
|
||||
|
||||
if len(line) == row_len:
|
||||
bitmap += line
|
||||
else:
|
||||
raise Exception('invalid bitmap length')
|
||||
|
||||
# FINAL
|
||||
if input.read_lines(lambda line: self.keep_finishes(line)) != b'ENDCHAR':
|
||||
raise Exception('ENDCHAR expected')
|
||||
|
||||
self.data = codecs.decode(bitmap, 'hex') # no spaces allowed
|
||||
return self
|
||||
|
||||
|
||||
@staticmethod
|
||||
def read(input):
|
||||
return Char()._read(input) # pylint: disable=protected-access
|
||||
|
||||
|
||||
def write(self, output):
|
||||
for [name, value] in self.props:
|
||||
output.write_prop(name, value)
|
||||
|
||||
output.write_line(Char.bitmap(self.data, self.bbx.row_size()) + b'\n'.join(self.finis))
|
||||
|
||||
|
||||
@unique
|
||||
class XLFD(IntEnum):
|
||||
FOUNDRY = 1
|
||||
FAMILY_NAME = 2
|
||||
WEIGHT_NAME = 3
|
||||
SLANT = 4
|
||||
SETWIDTH_NAME = 5
|
||||
ADD_STYLE_NAME = 6
|
||||
PIXEL_SIZE = 7
|
||||
POINT_SIZE = 8
|
||||
RESOLUTION_X = 9
|
||||
RESOLUTION_Y = 10
|
||||
SPACING = 11
|
||||
AVERAGE_WIDTH = 12
|
||||
CHARSET_REGISTRY = 13
|
||||
CHARSET_ENCODING = 14
|
||||
|
||||
CHARS_MAX = 65535
|
||||
|
||||
class Font(Base):
|
||||
def __init__(self):
|
||||
Base.__init__(self)
|
||||
self.xlfd = []
|
||||
self.chars = []
|
||||
self.default_code = -1
|
||||
|
||||
|
||||
def get_ascent(self):
|
||||
ascent = self.props.get('FONT_ASCENT')
|
||||
|
||||
if ascent is not None:
|
||||
return fnutil.parse_dec('FONT_ASCENT', ascent, -HEIGHT_MAX, HEIGHT_MAX)
|
||||
|
||||
return self.bbx.height + self.bbx.yoff
|
||||
|
||||
|
||||
def get_bold(self):
|
||||
return int(b'bold' in self.xlfd[XLFD.WEIGHT_NAME].lower())
|
||||
|
||||
|
||||
def get_italic(self):
|
||||
return int(re.search(b'^[IO]', self.xlfd[XLFD.SLANT]) is not None)
|
||||
|
||||
|
||||
def _read(self, input):
|
||||
# HEADER
|
||||
read_next = lambda: input.read_lines(lambda line: self.keep_comments(line))
|
||||
read_prop = lambda name, callback=None: self.props.parse(read_next(), name, callback)
|
||||
line = input.read_lines(Font.skip_empty)
|
||||
|
||||
if self.props.parse(line, 'STARTFONT') != b'2.1':
|
||||
raise Exception('STARTFONT 2.1 expected')
|
||||
|
||||
self.xlfd = read_prop('FONT', lambda name, value: value.split(b'-', 15))
|
||||
|
||||
if len(self.xlfd) != 15 or self.xlfd[0] != b'':
|
||||
raise Exception('non-XLFD font names are not supported')
|
||||
|
||||
read_prop('SIZE')
|
||||
self.bbx = read_prop('FONTBOUNDINGBOX', BBX.parse)
|
||||
line = read_next()
|
||||
|
||||
if line and line.startswith(b'STARTPROPERTIES'):
|
||||
num_props = self.props.parse(line, 'STARTPROPERTIES', fnutil.parse_dec)
|
||||
|
||||
for _ in range(0, num_props):
|
||||
line = read_next()
|
||||
|
||||
if not line:
|
||||
raise Exception('property expected')
|
||||
|
||||
match = re.fullmatch(br'(\w+)\s+([-\d"].*)', line)
|
||||
|
||||
if not match:
|
||||
raise Exception('invalid property format')
|
||||
|
||||
name = str(match.group(1), 'ascii')
|
||||
value = match.group(2)
|
||||
|
||||
if name == 'DEFAULT_CHAR':
|
||||
self.default_code = fnutil.parse_dec(name, value)
|
||||
|
||||
self.props.add(name, value)
|
||||
|
||||
if read_prop('ENDPROPERTIES') != b'':
|
||||
raise Exception('ENDPROPERTIES expected')
|
||||
|
||||
line = read_next()
|
||||
|
||||
# GLYPHS
|
||||
num_chars = self.props.parse(line, 'CHARS', lambda name, value: fnutil.parse_dec(name, value, 1, CHARS_MAX))
|
||||
|
||||
for _ in range(0, num_chars):
|
||||
self.chars.append(Char.read(input))
|
||||
|
||||
if next((char.code for char in self.chars if char.code == self.default_code), -1) != self.default_code:
|
||||
raise Exception('invalid DEFAULT_CHAR')
|
||||
|
||||
# FINAL
|
||||
if input.read_lines(lambda line: self.keep_finishes(line)) != b'ENDFONT':
|
||||
raise Exception('ENDFONT expected')
|
||||
|
||||
if input.read_lines(Font.skip_empty):
|
||||
raise Exception('garbage after ENDFONT')
|
||||
|
||||
return self
|
||||
|
||||
|
||||
@staticmethod
|
||||
def read(input):
|
||||
return Font()._read(input) # pylint: disable=protected-access
|
||||
|
||||
|
||||
@staticmethod
|
||||
def skip_empty(line):
|
||||
return line if line else None
|
||||
|
||||
|
||||
def write(self, output):
|
||||
for [name, value] in self.props:
|
||||
output.write_prop(name, value)
|
||||
|
||||
for char in self.chars:
|
||||
char.write(output)
|
||||
|
||||
output.write_line(b'\n'.join(self.finis))
|
263
bin/bdftofnt.js
Normal file
263
bin/bdftofnt.js
Normal file
@ -0,0 +1,263 @@
|
||||
//
|
||||
// Copyright (c) 2019 Dimitar Toshkov Zhekov <dimitar.zhekov@gmail.com>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of
|
||||
// the License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
|
||||
'use strict';
|
||||
|
||||
const tty = require('tty');
|
||||
|
||||
const fnutil = require('./fnutil.js');
|
||||
const fncli = require('./fncli.js');
|
||||
const fnio = require('./fnio.js');
|
||||
const bdf = require('./bdf.js');
|
||||
const bmpf = require('./bmpf.js');
|
||||
|
||||
|
||||
class Params extends fncli.Params {
|
||||
constructor() {
|
||||
super();
|
||||
this.charSet = -1;
|
||||
this.minChar = -1;
|
||||
this.fntFamily = 0;
|
||||
this.output = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const HELP = ('' +
|
||||
'usage: bdftofnt [-c CHARSET] [-m MINCHAR] [-f FAMILY] [-o OUTPUT] [INPUT]\n' +
|
||||
'Convert a BDF font to Windows FNT\n' +
|
||||
'\n' +
|
||||
' -c CHARSET fnt character set (default = 0, see wingdi.h ..._CHARSET)\n' +
|
||||
' -m MINCHAR fnt minimum character code (8-bit CP decimal, not unicode)\n' +
|
||||
' -f FAMILY fnt family: DontCare, Roman, Swiss, Modern or Decorative\n' +
|
||||
' -o OUTPUT output file (default = stdout, must not be a terminal)\n' +
|
||||
' --help display this help and exit\n' +
|
||||
' --version display the program version and license, and exit\n' +
|
||||
' --excstk display the exception stack on error\n' +
|
||||
'\n' +
|
||||
'The input must be a BDF 2.1 font encoded in the unicode range.\n');
|
||||
|
||||
const VERSION = 'bdftofnt 1.55, Copyright (C) 2019 Dimitar Toshkov Zhekov\n\n' + fnutil.GPL2PLUS_LICENSE;
|
||||
|
||||
const FNT_FAMILIES = [ 'DontCare', 'Roman', 'Swiss', 'Modern', 'Decorative' ];
|
||||
|
||||
class Options extends fncli.Options {
|
||||
constructor() {
|
||||
super(['-c', '-m', '-f', '-o'], HELP, VERSION);
|
||||
}
|
||||
|
||||
parse(name, value, params) {
|
||||
switch (name) {
|
||||
case '-c':
|
||||
params.charSet = fnutil.parseDec('charset', value, 0, 255);
|
||||
break;
|
||||
case '-m':
|
||||
params.minChar = fnutil.parseDec('minchar', value, 0, 255);
|
||||
break;
|
||||
case '-f':
|
||||
params.fntFamily = FNT_FAMILIES.indexOf(value);
|
||||
|
||||
if (params.fntFamily === -1) {
|
||||
throw new Error('invalid fnt family');
|
||||
}
|
||||
break;
|
||||
case '-o':
|
||||
params.output = value;
|
||||
break;
|
||||
default:
|
||||
this.fallback(name, params);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function mainProgram(nonopt, parsed) {
|
||||
const WIN_FONTHEADERSIZE = 118;
|
||||
|
||||
if (nonopt.length > 1) {
|
||||
throw new Error('invalid number of arguments, try --help');
|
||||
}
|
||||
|
||||
let charSet = parsed.charSet;
|
||||
let minChar = parsed.minChar;
|
||||
|
||||
// READ INPUT
|
||||
let ifs = new fnio.InputStream(nonopt[0]);
|
||||
|
||||
try {
|
||||
var font = bmpf.Font.read(ifs);
|
||||
ifs.close();
|
||||
} catch (e) {
|
||||
e.message = ifs.location() + e.message;
|
||||
throw e;
|
||||
}
|
||||
|
||||
// COMPUTE
|
||||
if (charSet === -1) {
|
||||
const encoding = font.xlfd[bdf.XLFD.CHARSET_ENCODING];
|
||||
|
||||
if (encoding.toLowerCase().match(/^(cp)?125[0-8]$/)) {
|
||||
const FNT_CHARSETS = [238, 204, 0, 161, 162, 177, 178, 186, 163];
|
||||
|
||||
charSet = FNT_CHARSETS[parseInt(encoding.substring(encoding.length - 1), 10)];
|
||||
} else {
|
||||
charSet = 255;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
const numChars = font.chars.length;
|
||||
|
||||
if (numChars > 256) {
|
||||
throw new Error('too many characters, the maximum is 256');
|
||||
}
|
||||
if (minChar === -1) {
|
||||
if (numChars === 192 || numChars === 256) {
|
||||
minChar = 256 - numChars;
|
||||
} else {
|
||||
minChar = font.chars[0].code;
|
||||
}
|
||||
}
|
||||
|
||||
var maxChar = minChar + numChars - 1;
|
||||
|
||||
if (maxChar >= 256) {
|
||||
throw new Error('the maximum character code is too big, (re)specify -m');
|
||||
}
|
||||
|
||||
// HEADER
|
||||
var vtell = WIN_FONTHEADERSIZE + (numChars + 1) * 4;
|
||||
var bitsOffset = vtell;
|
||||
var ctable = [];
|
||||
var widthBytes = 0;
|
||||
|
||||
// CTABLE/GLYPHS
|
||||
font.chars.forEach(char => {
|
||||
const rowSize = char.rowSize();
|
||||
|
||||
ctable.push(char.width);
|
||||
ctable.push(vtell);
|
||||
vtell += rowSize * font.bbx.height;
|
||||
widthBytes += rowSize;
|
||||
});
|
||||
|
||||
if (vtell > 0xFFFF) {
|
||||
throw new Error('too much character data');
|
||||
}
|
||||
|
||||
// SENTINEL
|
||||
var sentinel = 2 - widthBytes % 2;
|
||||
|
||||
ctable.push(sentinel * 8);
|
||||
ctable.push(vtell);
|
||||
vtell += sentinel * font.bbx.height;
|
||||
widthBytes += sentinel;
|
||||
|
||||
if (widthBytes > 0xFFFF) {
|
||||
throw new Error('the total character width is too big');
|
||||
}
|
||||
} catch (e) {
|
||||
e.message = ifs.location() + e.message;
|
||||
throw e;
|
||||
}
|
||||
|
||||
// WRITE
|
||||
let ofs = new fnio.OutputStream(parsed.output);
|
||||
|
||||
if (tty.isatty(ofs.fd)) {
|
||||
throw new Error('binary output may not be send to a terminal, use -o or redirect/pipe it');
|
||||
}
|
||||
|
||||
try {
|
||||
// HEADER
|
||||
const family = font.xlfd[bdf.XLFD.FAMILY_NAME];
|
||||
const proportional = font.getProportional();
|
||||
let copyright = font.props.get('COPYRIGHT');
|
||||
|
||||
copyright = (copyright != null) ? fnutil.unquote(copyright).substring(0, 60) : '';
|
||||
ofs.write16(0x0200); // font version
|
||||
ofs.write32(vtell + family.length + 1); // total size
|
||||
ofs.writeZStr(copyright, 60 - copyright.length);
|
||||
ofs.write16(0); // gdi, device type
|
||||
ofs.write16(fnutil.round(font.bbx.height * 72 / 96));
|
||||
ofs.write16(96); // vertical resolution
|
||||
ofs.write16(96); // horizontal resolution
|
||||
ofs.write16(font.getAscent()); // base line
|
||||
ofs.write16(0); // internal leading
|
||||
ofs.write16(0); // external leading
|
||||
ofs.write8(font.getItalic());
|
||||
ofs.write8(0); // underline
|
||||
ofs.write8(0); // strikeout
|
||||
ofs.write16(400 + 300 * font.getBold());
|
||||
ofs.write8(charSet);
|
||||
ofs.write16(proportional ? 0 : font.avgWidth);
|
||||
ofs.write16(font.bbx.height);
|
||||
ofs.write8((parsed.fntFamily << 4) + proportional);
|
||||
ofs.write16(font.avgWidth);
|
||||
ofs.write16(font.bbx.width);
|
||||
ofs.write8(minChar);
|
||||
ofs.write8(maxChar);
|
||||
|
||||
let defaultIndex = maxChar - minChar;
|
||||
let breakIndex = 0;
|
||||
|
||||
if (font.defaultCode !== -1) {
|
||||
defaultIndex = font.chars.findIndex(char => char.code === font.defaultCode);
|
||||
}
|
||||
|
||||
if (minChar <= 0x20 && maxChar >= 0x20) {
|
||||
breakIndex = 0x20 - minChar;
|
||||
}
|
||||
|
||||
ofs.write8(defaultIndex);
|
||||
ofs.write8(breakIndex);
|
||||
ofs.write16(widthBytes);
|
||||
ofs.write32(0); // device name
|
||||
ofs.write32(vtell);
|
||||
ofs.write32(0); // gdi bits pointer
|
||||
ofs.write32(bitsOffset);
|
||||
ofs.write8(0); // reserved
|
||||
|
||||
// CTABLE
|
||||
ctable.forEach(value => ofs.write16(value));
|
||||
|
||||
// GLYPHS
|
||||
let data = Buffer.alloc(font.bbx.height * font.bbx.rowSize());
|
||||
|
||||
font.chars.forEach(char => {
|
||||
const rowSize = char.rowSize();
|
||||
let counter = 0;
|
||||
// MS coordinates
|
||||
for (let n = 0; n < rowSize; n++) {
|
||||
for (let y = 0; y < font.bbx.height; y++) {
|
||||
data[counter++] = char.data[rowSize * y + n];
|
||||
}
|
||||
}
|
||||
ofs.write(data.slice(0, counter));
|
||||
});
|
||||
ofs.write(Buffer.alloc(sentinel * font.bbx.height));
|
||||
|
||||
// FAMILY
|
||||
ofs.writeZStr(family, 1);
|
||||
ofs.close();
|
||||
} catch (e) {
|
||||
e.message = ofs.location() + e.message + ofs.destroy();
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (require.main === module) {
|
||||
fncli.start('bdftofnt.js', new Options(), new Params(), mainProgram);
|
||||
}
|
228
bin/bdftofnt.py
Normal file
228
bin/bdftofnt.py
Normal file
@ -0,0 +1,228 @@
|
||||
#
|
||||
# Copyright (c) 2019 Dimitar Toshkov Zhekov <dimitar.zhekov@gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 2 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
|
||||
import re
|
||||
|
||||
import fnutil
|
||||
import fncli
|
||||
import fnio
|
||||
import bdf
|
||||
import bmpf
|
||||
|
||||
|
||||
class Params(fncli.Params):
|
||||
def __init__(self):
|
||||
fncli.Params.__init__(self)
|
||||
self.char_set = -1
|
||||
self.min_char = -1
|
||||
self.fnt_family = 0
|
||||
self.output = None
|
||||
|
||||
|
||||
HELP = ('' +
|
||||
'usage: bdftofnt [-c CHARSET] [-m MINCHAR] [-f FAMILY] [-o OUTPUT] [INPUT]\n' +
|
||||
'Convert a BDF font to Windows FNT\n' +
|
||||
'\n' +
|
||||
' -c CHARSET fnt character set (default = 0, see wingdi.h ..._CHARSET)\n' +
|
||||
' -m MINCHAR fnt minimum character code (8-bit CP decimal, not unicode)\n' +
|
||||
' -f FAMILY fnt family: DontCare, Roman, Swiss, Modern or Decorative\n' +
|
||||
' -o OUTPUT output file (default = stdout, must not be a terminal)\n' +
|
||||
' --help display this help and exit\n' +
|
||||
' --version display the program version and license, and exit\n' +
|
||||
' --excstk display the exception stack on error\n' +
|
||||
'\n' +
|
||||
'The input must be a BDF font encoded in the unicode range.\n')
|
||||
|
||||
VERSION = 'bdftofnt 1.55, Copyright (C) 2019 Dimitar Toshkov Zhekov\n\n' + fnutil.GPL2PLUS_LICENSE
|
||||
|
||||
FNT_FAMILIES = ['DontCare', 'Roman', 'Swiss', 'Modern', 'Decorative']
|
||||
|
||||
class Options(fncli.Options):
|
||||
def __init__(self):
|
||||
fncli.Options.__init__(self, ['-c', '-m', '-f', '-o'], HELP, VERSION)
|
||||
|
||||
|
||||
def parse(self, name, value, params):
|
||||
if name == '-c':
|
||||
params.char_set = fnutil.parse_dec('charset', value, 0, 255)
|
||||
elif name == '-m':
|
||||
params.min_char = fnutil.parse_dec('minchar', value, 0, 255)
|
||||
elif name == '-f':
|
||||
if value in FNT_FAMILIES:
|
||||
params.fnt_family = FNT_FAMILIES.index(value)
|
||||
else:
|
||||
raise Exception('invalid fnt family')
|
||||
elif name == '-o':
|
||||
params.output = value
|
||||
else:
|
||||
self.fallback(name, params)
|
||||
|
||||
|
||||
WIN_FONTHEADERSIZE = 118
|
||||
FNT_CHARSETS = [238, 204, 0, 161, 162, 177, 178, 186, 163]
|
||||
|
||||
def main_program(nonopt, parsed):
|
||||
if len(nonopt) > 1:
|
||||
raise Exception('invalid number of arguments, try --help')
|
||||
|
||||
char_set = parsed.char_set
|
||||
min_char = parsed.min_char
|
||||
|
||||
# READ INPUT
|
||||
ifs = fnio.InputStream(nonopt[0] if nonopt else None)
|
||||
|
||||
try:
|
||||
font = bmpf.Font.read(ifs)
|
||||
ifs.close()
|
||||
except Exception as ex:
|
||||
raise Exception(ifs.location() + str(ex))
|
||||
|
||||
# COMPUTE
|
||||
if char_set == -1:
|
||||
encoding = font.xlfd[bdf.XLFD.CHARSET_ENCODING]
|
||||
|
||||
if re.fullmatch(b'(cp)?125[0-8]', encoding.lower()):
|
||||
char_set = FNT_CHARSETS[int(encoding[-1:])]
|
||||
else:
|
||||
char_set = 255
|
||||
|
||||
try:
|
||||
num_chars = len(font.chars)
|
||||
|
||||
if num_chars > 256:
|
||||
raise Exception('too many characters, the maximum is 256')
|
||||
|
||||
if min_char == -1:
|
||||
if num_chars in [192, 256]:
|
||||
min_char = 256 - num_chars
|
||||
else:
|
||||
min_char = font.chars[0].code
|
||||
|
||||
max_char = min_char + num_chars - 1
|
||||
|
||||
if max_char >= 256:
|
||||
raise Exception('the maximum character code is too big, (re)specify -m')
|
||||
|
||||
# HEADER
|
||||
vtell = WIN_FONTHEADERSIZE + (num_chars + 1) * 4
|
||||
bits_offset = vtell
|
||||
ctable = []
|
||||
width_bytes = 0
|
||||
|
||||
# CTABLE/GLYPHS
|
||||
for char in font.chars:
|
||||
row_size = char.row_size()
|
||||
ctable.append(char.width)
|
||||
ctable.append(vtell)
|
||||
vtell += row_size * font.bbx.height
|
||||
width_bytes += row_size
|
||||
|
||||
if vtell > 0xFFFF:
|
||||
raise Exception('too much character data')
|
||||
|
||||
# SENTINEL
|
||||
sentinel = 2 - width_bytes % 2
|
||||
ctable.append(sentinel * 8)
|
||||
ctable.append(vtell)
|
||||
vtell += sentinel * font.bbx.height
|
||||
width_bytes += sentinel
|
||||
|
||||
if width_bytes > 0xFFFF:
|
||||
raise Exception('the total character width is too big')
|
||||
|
||||
except Exception as ex:
|
||||
raise Exception(ifs.location() + str(ex))
|
||||
|
||||
# WRITE
|
||||
ofs = fnio.OutputStream(parsed.output)
|
||||
|
||||
if ofs.file.isatty():
|
||||
raise Exception('binary output may not be send to a terminal, use -o or redirect/pipe it')
|
||||
|
||||
try:
|
||||
# HEADER
|
||||
family = font.xlfd[bdf.XLFD.FAMILY_NAME]
|
||||
copyright = font.props.get('COPYRIGHT')
|
||||
copyright = fnutil.unquote(copyright)[:60] if copyright is not None else b''
|
||||
proportional = font.get_proportional()
|
||||
|
||||
ofs.write16(0x0200) # font version
|
||||
ofs.write32(vtell + len(family) + 1) # total size
|
||||
ofs.write_zstr(copyright, 60 - len(copyright))
|
||||
ofs.write16(0) # gdi, device type
|
||||
ofs.write16(round(font.bbx.height * 72 / 96))
|
||||
ofs.write16(96) # vertical resolution
|
||||
ofs.write16(96) # horizontal resolution
|
||||
ofs.write16(font.get_ascent()) # base line
|
||||
ofs.write16(0) # internal leading
|
||||
ofs.write16(0) # external leading
|
||||
ofs.write8(font.get_italic())
|
||||
ofs.write8(0) # underline
|
||||
ofs.write8(0) # strikeout
|
||||
ofs.write16(400 + 300 * font.get_bold())
|
||||
ofs.write8(char_set)
|
||||
ofs.write16(0 if proportional else font.bbx.width)
|
||||
ofs.write16(font.bbx.height)
|
||||
ofs.write8((parsed.fnt_family << 4) + proportional)
|
||||
ofs.write16(font.avg_width)
|
||||
ofs.write16(font.bbx.width)
|
||||
ofs.write8(min_char)
|
||||
ofs.write8(max_char)
|
||||
|
||||
default_index = max_char - min_char
|
||||
break_index = 0
|
||||
|
||||
if font.default_code != -1:
|
||||
default_index = next(index for index, char in enumerate(font.chars) if char.code == font.default_code)
|
||||
|
||||
if min_char <= 0x20 <= max_char:
|
||||
break_index = 0x20 - min_char
|
||||
|
||||
ofs.write8(default_index)
|
||||
ofs.write8(break_index)
|
||||
ofs.write16(width_bytes)
|
||||
ofs.write32(0) # device name
|
||||
ofs.write32(vtell)
|
||||
ofs.write32(0) # gdi bits pointer
|
||||
ofs.write32(bits_offset)
|
||||
ofs.write8(0) # reserved
|
||||
|
||||
# CTABLE
|
||||
for value in ctable:
|
||||
ofs.write16(value)
|
||||
|
||||
# GLYPHS
|
||||
data = bytearray(font.bbx.height * font.bbx.row_size())
|
||||
|
||||
for char in font.chars:
|
||||
row_size = char.row_size()
|
||||
counter = 0
|
||||
# MS coordinates
|
||||
for n in range(0, row_size):
|
||||
for y in range(0, font.bbx.height):
|
||||
data[counter] = char.data[row_size * y + n]
|
||||
counter += 1
|
||||
ofs.write(data[:counter])
|
||||
ofs.write(bytes(sentinel * font.bbx.height))
|
||||
|
||||
# FAMILY
|
||||
ofs.write_zstr(family, 1)
|
||||
ofs.close()
|
||||
|
||||
except Exception as ex:
|
||||
raise Exception(ofs.location() + str(ex) + ofs.destroy())
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
fncli.start('bdftofnt.py', Options(), Params(), main_program)
|
296
bin/bdftopsf.js
Normal file
296
bin/bdftopsf.js
Normal file
@ -0,0 +1,296 @@
|
||||
//
|
||||
// Copyright (c) 2019 Dimitar Toshkov Zhekov <dimitar.zhekov@gmail.com>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of
|
||||
// the License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
|
||||
'use strict';
|
||||
|
||||
const tty = require('tty');
|
||||
|
||||
const fnutil = require('./fnutil.js');
|
||||
const fncli = require('./fncli.js');
|
||||
const fnio = require('./fnio.js');
|
||||
const bmpf = require('./bmpf.js');
|
||||
|
||||
|
||||
class Params extends fncli.Params {
|
||||
constructor() {
|
||||
super();
|
||||
this.version = -1;
|
||||
this.exchange = -1;
|
||||
this.output = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const HELP = ('' +
|
||||
'usage: bdftopsf [-1|-2|-r] [-g|-G] [-o OUTPUT] [INPUT.bdf] [TABLE...]\n' +
|
||||
'Convert a BDF font to PC Screen Font or raw font\n' +
|
||||
'\n' +
|
||||
' -1, -2 write a PSF version 1 or 2 font (default = 1 if possible)\n' +
|
||||
' -r, --raw write a RAW font\n' +
|
||||
' -g, --vga exchange the characters at positions 0...31 with these at\n' +
|
||||
' 192...223 (default for VGA text mode compliant PSF fonts\n' +
|
||||
' with 224 to 512 characters starting with unicode 00A3)\n' +
|
||||
' -G do not exchange characters 0...31 and 192...223\n' +
|
||||
' -o OUTPUT output file (default = stdout, must not be a terminal)\n' +
|
||||
' --help display this help and exit\n' +
|
||||
' --version display the program version and license, and exit\n' +
|
||||
' --excstk display the exception stack on error\n' +
|
||||
'\n' +
|
||||
'The input must be a monospaced unicode-encoded BDF 2.1 font.\n' +
|
||||
'\n' +
|
||||
'The tables are text files with two or more hexadecimal unicodes per line:\n' +
|
||||
'a character code from the BDF, and extra code(s) for it. All extra codes\n' +
|
||||
'are stored sequentially in the PSF unicode table for their character.\n' +
|
||||
'<ss> is always specified as FFFE, although it is stored as FE in PSF2.\n');
|
||||
|
||||
const VERSION = 'bdftopsf 1.50, Copyright (C) 2019 Dimitar Toshkov Zhekov\n\n' + fnutil.GPL2PLUS_VERSION;
|
||||
|
||||
class Options extends fncli.Options {
|
||||
constructor() {
|
||||
super(['-o'], HELP, VERSION);
|
||||
}
|
||||
|
||||
parse(name, value, params) {
|
||||
switch (name) {
|
||||
case '-1':
|
||||
case '-2':
|
||||
params.version = parseInt(name[1]);
|
||||
break;
|
||||
case '-r':
|
||||
case '--raw':
|
||||
params.version = 0;
|
||||
break;
|
||||
case '-g':
|
||||
case '--vga':
|
||||
params.exchange = true;
|
||||
break;
|
||||
case '-G':
|
||||
params.exchange = false;
|
||||
break;
|
||||
case '-o':
|
||||
params.output = value;
|
||||
break;
|
||||
default:
|
||||
this.fallback(name, params);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function mainProgram(nonopt, parsed) {
|
||||
const bdfile = nonopt.length > 0 && nonopt[0].toLowerCase().endsWith('.bdf');
|
||||
let version = parsed.version;
|
||||
let exchange = parsed.exchange;
|
||||
let ver1Unicodes = true;
|
||||
|
||||
// READ INPUT
|
||||
let ifs = new fnio.InputStream(bdfile ? nonopt[0] : null);
|
||||
|
||||
try {
|
||||
var font = bmpf.Font.read(ifs);
|
||||
|
||||
ifs.close();
|
||||
font.chars.forEach(char => {
|
||||
const prefix = `char ${char.code}: `;
|
||||
|
||||
if (char.width !== font.bbx.width) {
|
||||
throw new Error(prefix + 'output width not equal to maximum output width');
|
||||
}
|
||||
if (char.code === 65534) {
|
||||
throw new Error(prefix + 'not a character, use 65535 for empty position');
|
||||
}
|
||||
if (char.code >= 65536) {
|
||||
if (version === 1) {
|
||||
throw new Error(prefix + '-1 requires unicodes <= 65535');
|
||||
}
|
||||
ver1Unicodes = false;
|
||||
}
|
||||
});
|
||||
|
||||
// VERSION
|
||||
var ver1NumChars = (font.chars.length === 256 || font.chars.length === 512);
|
||||
|
||||
if (version === 1) {
|
||||
if (!ver1NumChars) {
|
||||
throw new Error('-1 requires a font with 256 or 512 characters');
|
||||
}
|
||||
if (font.bbx.width !== 8) {
|
||||
throw new Error('-1 requires a font with width 8');
|
||||
}
|
||||
}
|
||||
|
||||
// EXCHANGE
|
||||
var vgaNumChars = font.chars.length >= 224 && font.chars.length <= 512;
|
||||
var vgaTextSize = font.bbx.width === 8 && [8, 14, 16].indexOf(font.bbx.height) !== -1;
|
||||
|
||||
if (exchange === true) {
|
||||
if (!vgaNumChars) {
|
||||
throw new Error('-g/--vga requires a font with 224...512 characters');
|
||||
}
|
||||
if (!vgaTextSize) {
|
||||
throw new Error('-g/--vga requires an 8x8, 8x14 or 8x16 font');
|
||||
}
|
||||
}
|
||||
} catch (e) {
|
||||
e.message = ifs.location() + e.message;
|
||||
throw e;
|
||||
}
|
||||
|
||||
// READ TABLES
|
||||
let tables = [];
|
||||
|
||||
function loadExtra(line) {
|
||||
const words = line.split(/\s+/);
|
||||
|
||||
if (words.length < 2) {
|
||||
throw new Error('invalid format');
|
||||
}
|
||||
|
||||
const uni = fnutil.parseHex('unicode', words[0]);
|
||||
let table = tables[uni];
|
||||
|
||||
if (uni === 0xFFFE) {
|
||||
throw new Error('FFFE is not a character');
|
||||
}
|
||||
|
||||
if (font.chars.findIndex(char => char.code === uni) !== -1) {
|
||||
if (uni >= 0x10000) {
|
||||
ver1Unicodes = false;
|
||||
}
|
||||
if (table == null) {
|
||||
table = tables[uni] = [];
|
||||
}
|
||||
|
||||
words.slice(1).forEach(word => {
|
||||
const dup = fnutil.parseHex('extra code', word);
|
||||
|
||||
if (dup === 0xFFFF) {
|
||||
throw new Error('FFFF is not a character');
|
||||
}
|
||||
if (dup >= 0x10000) {
|
||||
ver1Unicodes = false;
|
||||
}
|
||||
if (table.indexOf(dup) === -1 || table.indexOf(0xFFFE) !== -1) {
|
||||
table.push(dup);
|
||||
}
|
||||
});
|
||||
if (version === 1 && !ver1Unicodes) {
|
||||
throw new Error('-1 requires unicodes <= FFFF');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
nonopt.slice(Number(bdfile)).forEach(name => {
|
||||
ifs = new fnio.InputStream(name);
|
||||
|
||||
try {
|
||||
ifs.readLines(loadExtra);
|
||||
ifs.close();
|
||||
} catch (e) {
|
||||
e.message = ifs.location() + e.message;
|
||||
throw e;
|
||||
}
|
||||
});
|
||||
|
||||
// VERSION
|
||||
if (version === -1) {
|
||||
version = ver1NumChars && ver1Unicodes && font.bbx.width === 8 ? 1 : 2;
|
||||
}
|
||||
|
||||
// EXCHANGE
|
||||
if (exchange === -1) {
|
||||
exchange = vgaTextSize && version >= 1 && vgaNumChars && font.chars[0].code === 0x00A3;
|
||||
}
|
||||
|
||||
if (exchange) {
|
||||
const control = font.chars.splice(0, 32, ...font.chars.splice(192, 32));
|
||||
font.chars.splice(192, 0, ...control);
|
||||
}
|
||||
|
||||
// WRITE
|
||||
let ofs = new fnio.OutputStream(parsed.output);
|
||||
|
||||
if (tty.isatty(ofs.fd)) {
|
||||
throw new Error('binary output may not be send to a terminal, use -o or redirect/pipe it');
|
||||
}
|
||||
|
||||
try {
|
||||
// HEADER
|
||||
if (version === 1) {
|
||||
ofs.write8(0x36);
|
||||
ofs.write8(0x04);
|
||||
ofs.write8((font.chars.length >> 8) + 1);
|
||||
ofs.write8(font.bbx.height);
|
||||
} else if (version === 2) {
|
||||
ofs.write32(0x864AB572);
|
||||
ofs.write32(0x00000000);
|
||||
ofs.write32(0x00000020);
|
||||
ofs.write32(0x00000001);
|
||||
ofs.write32(font.chars.length);
|
||||
ofs.write32(font.chars[0].data.length);
|
||||
ofs.write32(font.bbx.height);
|
||||
ofs.write32(font.bbx.width);
|
||||
}
|
||||
|
||||
// GLYPHS
|
||||
font.chars.forEach(char => ofs.write(char.data));
|
||||
|
||||
// UNICODES
|
||||
if (version > 0) {
|
||||
const writeUnicode = function(code) {
|
||||
if (version === 1) {
|
||||
ofs.write16(code);
|
||||
} else if (code <= 0x7F) {
|
||||
ofs.write8(code);
|
||||
} else if (code === 0xFFFE || code === 0xFFFF) {
|
||||
ofs.write8(code & 0xFF);
|
||||
} else {
|
||||
if (code <= 0x7FF) {
|
||||
ofs.write8(0xC0 + (code >> 6));
|
||||
} else {
|
||||
if (code <= 0xFFFF) {
|
||||
ofs.write8(0xE0 + (code >> 12));
|
||||
} else {
|
||||
ofs.write8(0xF0 + (code >> 18));
|
||||
ofs.write8(0x80 + ((code >> 12) & 0x3F));
|
||||
}
|
||||
ofs.write8(0x80 + ((code >> 6) & 0x3F));
|
||||
}
|
||||
ofs.write8(0x80 + (code & 0x3F));
|
||||
}
|
||||
};
|
||||
|
||||
font.chars.forEach(char => {
|
||||
if (char.code !== 0xFFFF) {
|
||||
writeUnicode(char.code);
|
||||
}
|
||||
if (tables[char.code] != null) {
|
||||
tables[char.code].forEach(extra => writeUnicode(extra));
|
||||
}
|
||||
writeUnicode(0xFFFF);
|
||||
});
|
||||
}
|
||||
|
||||
// FINISH
|
||||
ofs.close();
|
||||
} catch (e) {
|
||||
e.message = ofs.location() + e.message + ofs.destroy();
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (require.main === module) {
|
||||
fncli.start('bdftopsf.js', new Options(), new Params(), mainProgram);
|
||||
}
|
254
bin/bdftopsf.py
Normal file
254
bin/bdftopsf.py
Normal file
@ -0,0 +1,254 @@
|
||||
#
|
||||
# Copyright (c) 2019 Dimitar Toshkov Zhekov <dimitar.zhekov@gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 2 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
|
||||
import re
|
||||
|
||||
import fnutil
|
||||
import fncli
|
||||
import fnio
|
||||
import bmpf
|
||||
|
||||
|
||||
class Params(fncli.Params):
|
||||
def __init__(self):
|
||||
fncli.Params.__init__(self)
|
||||
self.version = -1
|
||||
self.exchange = -1
|
||||
self.output = None
|
||||
|
||||
|
||||
HELP = ('' +
|
||||
'usage: bdftopsf [-1|-2|-r] [-g|-G] [-o OUTPUT] [INPUT.bdf] [TABLE...]\n' +
|
||||
'Convert a BDF font to PC Screen Font or raw font\n' +
|
||||
'\n' +
|
||||
' -1, -2 write a PSF version 1 or 2 font (default = 1 if possible)\n' +
|
||||
' -r, --raw write a RAW font\n' +
|
||||
' -g, --vga exchange the characters at positions 0...31 with these at\n' +
|
||||
' 192...223 (default for VGA text mode compliant PSF fonts\n' +
|
||||
' with 224 to 512 characters starting with unicode 00A3)\n' +
|
||||
' -G do not exchange characters 0...31 and 192...223\n' +
|
||||
' -o OUTPUT output file (default = stdout, must not be a terminal)\n' +
|
||||
' --help display this help and exit\n' +
|
||||
' --version display the program version and license, and exit\n' +
|
||||
' --excstk display the exception stack on error\n' +
|
||||
'\n' +
|
||||
'The input must be a monospaced unicode-encoded BDF 2.1 font.\n' +
|
||||
'\n' +
|
||||
'The tables are text files with two or more hexadecimal unicodes per line:\n' +
|
||||
'a character code from the BDF, and extra code(s) for it. All extra codes\n' +
|
||||
'are stored sequentially in the PSF unicode table for their character.\n' +
|
||||
'<ss> is always specified as FFFE, although it is stored as FE in PSF2.\n')
|
||||
|
||||
VERSION = 'bdftopsf 1.50, Copyright (C) 2019 Dimitar Toshkov Zhekov\n\n' + fnutil.GPL2PLUS_LICENSE
|
||||
|
||||
class Options(fncli.Options):
|
||||
def __init__(self):
|
||||
fncli.Options.__init__(self, ['-o'], HELP, VERSION)
|
||||
|
||||
|
||||
def parse(self, name, value, params):
|
||||
if name in ['-1', '-2']:
|
||||
params.version = int(name[1])
|
||||
elif name in ['-r', '--raw']:
|
||||
params.version = 0
|
||||
elif name in ['-g', '--vga']:
|
||||
params.exchange = True
|
||||
elif name == '-G':
|
||||
params.exchange = False
|
||||
elif name == '-o':
|
||||
params.output = value
|
||||
else:
|
||||
self.fallback(name, params)
|
||||
|
||||
|
||||
def main_program(nonopt, parsed):
|
||||
version = parsed.version
|
||||
exchange = parsed.exchange
|
||||
bdfile = len(nonopt) > 0 and nonopt[0].lower().endswith('.bdf')
|
||||
ver1_unicodes = True
|
||||
|
||||
# READ INPUT
|
||||
ifs = fnio.InputStream(nonopt[0] if bdfile else None)
|
||||
|
||||
try:
|
||||
font = bmpf.Font.read(ifs)
|
||||
ifs.close()
|
||||
|
||||
for char in font.chars:
|
||||
prefix = 'char %d: ' % char.code
|
||||
|
||||
if char.width != font.bbx.width:
|
||||
raise Exception(prefix + 'output width not equal to maximum output width')
|
||||
|
||||
if char.code == 65534:
|
||||
raise Exception(prefix + 'not a character, use 65535 for empty position')
|
||||
|
||||
if char.code >= 65536:
|
||||
if version == 1:
|
||||
raise Exception(prefix + '-1 requires unicodes <= 65535')
|
||||
ver1_unicodes = False
|
||||
|
||||
# VERSION
|
||||
ver1_num_chars = len(font.chars) == 256 or len(font.chars) == 512
|
||||
|
||||
if version == 1:
|
||||
if not ver1_num_chars:
|
||||
raise Exception('-1 requires a font with 256 or 512 characters')
|
||||
|
||||
if font.bbx.width != 8:
|
||||
raise Exception('-1 requires a font with width 8')
|
||||
|
||||
# EXCHANGE
|
||||
vga_num_chars = len(font.chars) >= 224 and len(font.chars) <= 512
|
||||
vga_text_size = font.bbx.width == 8 and font.bbx.height in [8, 14, 16]
|
||||
|
||||
if exchange is True:
|
||||
if not vga_num_chars:
|
||||
raise Exception('-g/--vga requires a font with 224...512 characters')
|
||||
|
||||
if not vga_text_size:
|
||||
raise Exception('-g/--vga requires an 8x8, 8x14 or 8x16 font')
|
||||
|
||||
except Exception as ex:
|
||||
raise Exception(ifs.location() + str(ex))
|
||||
|
||||
# READ TABLES
|
||||
tables = dict()
|
||||
|
||||
def load_extra(line):
|
||||
nonlocal ver1_unicodes
|
||||
|
||||
words = re.split(br'\s+', line)
|
||||
|
||||
if len(words) < 2:
|
||||
raise Exception('invalid format')
|
||||
|
||||
uni = fnutil.parse_hex('unicode', words[0])
|
||||
|
||||
if uni == 0xFFFE:
|
||||
raise Exception('FFFE is not a character')
|
||||
|
||||
if next((char for char in font.chars if char.code == uni), None):
|
||||
if uni >= 0x10000:
|
||||
ver1_unicodes = False
|
||||
|
||||
if uni not in tables:
|
||||
tables[uni] = []
|
||||
|
||||
table = tables[uni]
|
||||
|
||||
for word in words[1:]:
|
||||
dup = fnutil.parse_hex('extra code', word)
|
||||
|
||||
if dup == 0xFFFF:
|
||||
raise Exception('FFFF is not a character')
|
||||
|
||||
if dup >= 0x10000:
|
||||
ver1_unicodes = False
|
||||
|
||||
if not dup in table or 0xFFFE in table:
|
||||
tables[uni].append(dup)
|
||||
|
||||
if version == 1 and not ver1_unicodes:
|
||||
raise Exception('-1 requires unicodes <= FFFF')
|
||||
|
||||
for name in nonopt[int(bdfile):]:
|
||||
ifs = fnio.InputStream(name)
|
||||
|
||||
try:
|
||||
ifs.read_lines(load_extra)
|
||||
ifs.close()
|
||||
except Exception as ex:
|
||||
raise Exception(ifs.location() + str(ex))
|
||||
|
||||
# VERSION
|
||||
if version == -1:
|
||||
version = 1 if ver1_num_chars and ver1_unicodes and font.bbx.width == 8 else 2
|
||||
|
||||
# EXCHANGE
|
||||
if exchange == -1:
|
||||
exchange = vga_text_size and version >= 1 and vga_num_chars and font.chars[0].code == 0x00A3
|
||||
|
||||
if exchange:
|
||||
font.chars = font.chars[192:224] + font.chars[32:192] + font.chars[0:32] + font.chars[224:]
|
||||
|
||||
# WRITE
|
||||
ofs = fnio.OutputStream(parsed.output)
|
||||
|
||||
if ofs.file.isatty():
|
||||
raise Exception('binary output may not be send to a terminal, use -o or redirect/pipe it')
|
||||
|
||||
try:
|
||||
# HEADER
|
||||
if version == 1:
|
||||
ofs.write8(0x36)
|
||||
ofs.write8(0x04)
|
||||
ofs.write8((len(font.chars) >> 8) + 1)
|
||||
ofs.write8(font.bbx.height)
|
||||
elif version == 2:
|
||||
ofs.write32(0x864AB572)
|
||||
ofs.write32(0x00000000)
|
||||
ofs.write32(0x00000020)
|
||||
ofs.write32(0x00000001)
|
||||
ofs.write32(len(font.chars))
|
||||
ofs.write32(len(font.chars[0].data))
|
||||
ofs.write32(font.bbx.height)
|
||||
ofs.write32(font.bbx.width)
|
||||
|
||||
# GLYPHS
|
||||
for char in font.chars:
|
||||
ofs.write(char.data)
|
||||
|
||||
# UNICODES
|
||||
if version > 0:
|
||||
def write_unicode(code):
|
||||
if version == 1:
|
||||
ofs.write16(code)
|
||||
elif code <= 0x7F:
|
||||
ofs.write8(code)
|
||||
elif code in [0xFFFE, 0xFFFF]:
|
||||
ofs.write8(code & 0xFF)
|
||||
else:
|
||||
if code <= 0x7FF:
|
||||
ofs.write8(0xC0 + (code >> 6))
|
||||
else:
|
||||
if code <= 0xFFFF:
|
||||
ofs.write8(0xE0 + (code >> 12))
|
||||
else:
|
||||
ofs.write8(0xF0 + (code >> 18))
|
||||
ofs.write8(0x80 + ((code >> 12) & 0x3F))
|
||||
|
||||
ofs.write8(0x80 + ((code >> 6) & 0x3F))
|
||||
|
||||
ofs.write8(0x80 + (code & 0x3F))
|
||||
|
||||
for char in font.chars:
|
||||
if char.code != 0xFFFF:
|
||||
write_unicode(char.code)
|
||||
|
||||
if char.code in tables:
|
||||
for extra in tables[char.code]:
|
||||
write_unicode(extra)
|
||||
|
||||
write_unicode(0xFFFF)
|
||||
|
||||
# FINISH
|
||||
ofs.close()
|
||||
|
||||
except Exception as ex:
|
||||
raise Exception(ofs.location() + str(ex) + ofs.destroy())
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
fncli.start('bdftopsf.py', Options(), Params(), main_program)
|
159
bin/bmpf.js
Normal file
159
bin/bmpf.js
Normal file
@ -0,0 +1,159 @@
|
||||
//
|
||||
// Copyright (c) 2018 Dimitar Toshkov Zhekov <dimitar.zhekov@gmail.com>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of
|
||||
// the License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
|
||||
'use strict';
|
||||
|
||||
const fnutil = require('./fnutil.js');
|
||||
const bdf = require('./bdf.js');
|
||||
|
||||
|
||||
class Char {
|
||||
constructor(code, name, width, data) {
|
||||
this.code = code;
|
||||
this.name = name;
|
||||
this.width = width;
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
static from(char, fbbox) {
|
||||
const deltaYOff = char.bbx.yoff - fbbox.yoff; // ~DSB
|
||||
let width;
|
||||
let dstXOff;
|
||||
|
||||
if (char.dwidth.x >= 0) {
|
||||
if (char.bbx.xoff >= 0) {
|
||||
width = Math.max(char.bbx.width + char.bbx.xoff, char.dwidth.x);
|
||||
dstXOff = char.bbx.xoff;
|
||||
} else {
|
||||
width = Math.max(char.bbx.width, char.dwidth.x - char.bbx.xoff);
|
||||
dstXOff = 0;
|
||||
}
|
||||
} else {
|
||||
dstXOff = Math.max(char.bbx.xoff - char.dwidth.x, 0);
|
||||
width = char.bbx.width + dstXOff;
|
||||
}
|
||||
|
||||
if (width > bdf.WIDTH_MAX) {
|
||||
throw new Error(`char ${char.code}: output width > ${bdf.WIDTH_MAX}`);
|
||||
}
|
||||
if (char.bbx.yoff < fbbox.yoff) {
|
||||
throw new Error(`char ${char.code}: BBX yoff < FONTBOUNDINGBOX yoff`);
|
||||
}
|
||||
|
||||
const height = fbbox.height;
|
||||
const srcRowSize = char.bbx.rowSize();
|
||||
const dstRowSize = (width + 7) >> 3;
|
||||
const dstYMax = height - deltaYOff;
|
||||
const dstYMin = dstYMax - char.bbx.height;
|
||||
const compatRow = dstXOff === 0 && width >= char.bbx.width;
|
||||
let data;
|
||||
|
||||
if (compatRow && srcRowSize === dstRowSize && dstYMin === 0 && dstYMax === height) {
|
||||
data = char.data;
|
||||
} else if (dstYMin < 0) {
|
||||
throw new Error(`char ${char.code}: start row ${dstYMin}`);
|
||||
} else {
|
||||
data = Buffer.alloc(dstRowSize * height);
|
||||
|
||||
for (let dstY = dstYMin; dstY < dstYMax; dstY++) {
|
||||
let srcByteNo = (dstY - dstYMin) * srcRowSize;
|
||||
let dstByteNo = dstY * dstRowSize + (dstXOff >> 3);
|
||||
|
||||
if (compatRow) {
|
||||
char.data.copy(data, dstByteNo, srcByteNo, srcByteNo + srcRowSize);
|
||||
} else {
|
||||
let srcBitNo = 7;
|
||||
let dstBitNo = 7 - (dstXOff & 7);
|
||||
|
||||
for (let x = 0; x < char.bbx.width; x++) {
|
||||
if (char.data[srcByteNo] & (1 << srcBitNo)) {
|
||||
data[dstByteNo] |= (1 << dstBitNo);
|
||||
}
|
||||
if (--srcBitNo < 0) {
|
||||
srcBitNo = 7;
|
||||
srcByteNo++;
|
||||
}
|
||||
if (--dstBitNo < 0) {
|
||||
dstBitNo = 7;
|
||||
dstByteNo++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return new Char(char.code, char.props.get('STARTCHAR'), width, data);
|
||||
}
|
||||
|
||||
packedSize() {
|
||||
return (this.width * (this.data.length / this.rowSize()) + 7) >> 3;
|
||||
}
|
||||
|
||||
rowSize() {
|
||||
return (this.width + 7) >> 3;
|
||||
}
|
||||
|
||||
write(output, height, yoffset) {
|
||||
let header = `STARTCHAR ${this.name}\nENCODING ${this.code}\n`;
|
||||
const swidth = fnutil.round(this.width * 1000 / height);
|
||||
|
||||
header += `SWIDTH ${swidth} 0\nDWIDTH ${this.width} 0\nBBX ${this.width} ${height} 0 ${yoffset}\n`;
|
||||
output.writeLine(header + 'BITMAP\n' + bdf.Char.bitmap(this.data, this.rowSize()) + 'ENDCHAR');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class Font extends bdf.Font {
|
||||
constructor() {
|
||||
super();
|
||||
this.minWidth = bdf.WIDTH_MAX;
|
||||
this.avgWidth = 0;
|
||||
}
|
||||
|
||||
_read(input) {
|
||||
let totalWidth = 0;
|
||||
|
||||
super._read(input);
|
||||
this.chars = this.chars.map(char => Char.from(char, this.bbx));
|
||||
this.bbx.xoff = 0;
|
||||
this.chars.forEach(char => {
|
||||
this.minWidth = Math.min(this.minWidth, char.width);
|
||||
this.bbx.width = Math.max(this.bbx.width, char.width);
|
||||
totalWidth += char.width;
|
||||
});
|
||||
this.avgWidth = fnutil.round(totalWidth / this.chars.length);
|
||||
this.props.set('FONTBOUNDINGBOX', this.bbx.toString());
|
||||
return this;
|
||||
}
|
||||
|
||||
static read(input) {
|
||||
return (new Font())._read(input);
|
||||
}
|
||||
|
||||
getProportional() {
|
||||
return Number(this.bbx.width > this.minWidth);
|
||||
}
|
||||
|
||||
write(output) {
|
||||
this.props.forEach((name, value) => output.writeProp(name, value));
|
||||
this.chars.forEach(char => char.write(output, this.bbx.height, this.bbx.yoff));
|
||||
output.writeLine('ENDFONT');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module.exports = Object.freeze({
|
||||
Char,
|
||||
Font
|
||||
});
|
147
bin/bmpf.py
Normal file
147
bin/bmpf.py
Normal file
@ -0,0 +1,147 @@
|
||||
#
|
||||
# Copyright (c) 2018 Dimitar Toshkov Zhekov <dimitar.zhekov@gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 2 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
|
||||
import bdf
|
||||
|
||||
|
||||
class Char:
|
||||
def __init__(self, code, name, width, data):
|
||||
self.code = code
|
||||
self.name = name
|
||||
self.width = width
|
||||
self.data = data
|
||||
|
||||
|
||||
@staticmethod
|
||||
def from_bdf(char, fbbox):
|
||||
delta_yoff = char.bbx.yoff - fbbox.yoff # ~DSB
|
||||
|
||||
if delta_yoff < 0:
|
||||
raise Exception('char %d: BBX yoff < FONTBOUNDINGBOX yoff' % char.code)
|
||||
|
||||
if char.dwidth.x >= 0:
|
||||
if char.bbx.xoff >= 0:
|
||||
width = max(char.bbx.width + char.bbx.xoff, char.dwidth.x)
|
||||
dst_xoff = char.bbx.xoff
|
||||
else:
|
||||
width = max(char.bbx.width, char.dwidth.x - char.bbx.xoff)
|
||||
dst_xoff = 0
|
||||
else:
|
||||
dst_xoff = max(char.bbx.xoff - char.dwidth.x, 0)
|
||||
width = char.bbx.width + dst_xoff
|
||||
|
||||
if width > bdf.WIDTH_MAX:
|
||||
raise Exception('char %d: output width > %d' % (char.code, bdf.WIDTH_MAX))
|
||||
|
||||
height = fbbox.height
|
||||
src_row_size = char.bbx.row_size()
|
||||
dst_row_size = (width + 7) >> 3
|
||||
dst_ymax = height - delta_yoff
|
||||
dst_ymin = dst_ymax - char.bbx.height
|
||||
compat_row = dst_xoff == 0 and width >= char.bbx.width
|
||||
|
||||
if compat_row and src_row_size == dst_row_size and dst_ymin == 0 and dst_ymax == height:
|
||||
data = char.data
|
||||
elif dst_ymin < 0:
|
||||
raise Exception('char %d: start row %d' % (char.code, dst_ymin))
|
||||
elif compat_row:
|
||||
src_byte_no = 0
|
||||
data = bytearray(dst_ymin * dst_row_size)
|
||||
line_fill = bytes(dst_row_size - src_row_size)
|
||||
|
||||
for dst_y in range(dst_ymin, dst_ymax):
|
||||
data += char.data[src_byte_no : src_byte_no + src_row_size] + line_fill
|
||||
src_byte_no += src_row_size
|
||||
|
||||
data += bytes(delta_yoff * dst_row_size)
|
||||
else:
|
||||
data = bytearray(dst_row_size * height)
|
||||
|
||||
for dst_y in range(dst_ymin, dst_ymax):
|
||||
src_byte_no = (dst_y - dst_ymin) * src_row_size
|
||||
dst_byte_no = dst_y * dst_row_size + (dst_xoff >> 3)
|
||||
|
||||
src_bit_no = 7
|
||||
dst_bit_no = 7 - (dst_xoff & 7)
|
||||
|
||||
for _ in range(0, char.bbx.width):
|
||||
if char.data[src_byte_no] & (1 << src_bit_no):
|
||||
data[dst_byte_no] |= (1 << dst_bit_no)
|
||||
|
||||
if src_bit_no > 0:
|
||||
src_bit_no -= 1
|
||||
else:
|
||||
src_bit_no = 7
|
||||
src_byte_no += 1
|
||||
|
||||
if dst_bit_no > 0:
|
||||
dst_bit_no -= 1
|
||||
else:
|
||||
dst_bit_no = 7
|
||||
dst_byte_no += 1
|
||||
|
||||
return Char(char.code, char.props.get('STARTCHAR'), width, data)
|
||||
|
||||
|
||||
def row_size(self):
|
||||
return (self.width + 7) >> 3
|
||||
|
||||
|
||||
def write(self, output, max_width, yoffset):
|
||||
output.write_line(b'STARTCHAR %s\nENCODING %d' % (self.name, self.code))
|
||||
output.write_line(b'SWIDTH %d 0\nDWIDTH %d 0' % (round(self.width * 1000 / max_width), self.width))
|
||||
output.write_line(b'BBX %d %d 0 %d' % (self.width, len(self.data) / self.row_size(), yoffset))
|
||||
output.write_line(b'BITMAP\n' + bdf.Char.bitmap(self.data, self.row_size()) + b'ENDCHAR')
|
||||
|
||||
|
||||
class Font(bdf.Font):
|
||||
def __init__(self):
|
||||
bdf.Font.__init__(self)
|
||||
self.min_width = bdf.WIDTH_MAX
|
||||
self.avg_width = 0
|
||||
|
||||
|
||||
def _read(self, input):
|
||||
bdf.Font._read(self, input)
|
||||
self.chars = [Char.from_bdf(char, self.bbx) for char in self.chars]
|
||||
self.bbx.xoff = 0
|
||||
total_width = 0
|
||||
|
||||
for char in self.chars:
|
||||
self.min_width = min(self.min_width, char.width)
|
||||
self.bbx.width = max(self.bbx.width, char.width)
|
||||
total_width += char.width
|
||||
|
||||
self.avg_width = round(total_width / len(self.chars))
|
||||
self.props.set('FONTBOUNDINGBOX', bytes(str(self.bbx), 'ascii'))
|
||||
return self
|
||||
|
||||
|
||||
@staticmethod
|
||||
def read(input):
|
||||
return Font()._read(input) # pylint: disable=protected-access
|
||||
|
||||
|
||||
def get_proportional(self):
|
||||
return int(self.bbx.width > self.min_width)
|
||||
|
||||
|
||||
def write(self, output):
|
||||
for [name, value] in self.props:
|
||||
output.write_prop(name, value)
|
||||
|
||||
for char in self.chars:
|
||||
char.write(output, self.bbx.width, self.bbx.yoff)
|
||||
|
||||
output.write_line(b'ENDFONT')
|
173
bin/fncli.js
Normal file
173
bin/fncli.js
Normal file
@ -0,0 +1,173 @@
|
||||
//
|
||||
// Copyright (c) 2019 Dimitar Toshkov Zhekov <dimitar.zhekov@gmail.com>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of
|
||||
// the License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
|
||||
'use strict';
|
||||
|
||||
|
||||
class Params {
|
||||
constructor() {
|
||||
this.excstk = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class Options {
|
||||
constructor(needArgs, helpText, versionText) {
|
||||
needArgs.forEach(name => {
|
||||
if (!name.match(/^(-[^-]|--[^=]+)$/)) {
|
||||
throw new Error(`invalid option name "${name}"`);
|
||||
}
|
||||
});
|
||||
this.needArgs = needArgs;
|
||||
this.helpText = helpText;
|
||||
this.versionText = versionText;
|
||||
}
|
||||
|
||||
posixlyCorrect() { // eslint-disable-line class-methods-use-this
|
||||
return process.env['POSIXLY_CORRECT'] != null;
|
||||
}
|
||||
|
||||
needsArg(name) {
|
||||
return this.needArgs.includes(name);
|
||||
}
|
||||
|
||||
fallback(name, params) {
|
||||
if (name === '--excstk') {
|
||||
params.excstk = true;
|
||||
} else if (name === '--help' && this.helpText != null) {
|
||||
process.stdout.write(this.helpText);
|
||||
process.exit(0);
|
||||
} else if (name === '--version' && this.versionText != null) {
|
||||
process.stdout.write(this.versionText);
|
||||
process.exit(0);
|
||||
} else {
|
||||
let suffix = this.needsArg(name) ? ' (taking an argument?)' : '';
|
||||
|
||||
suffix += (this.helpText != null) ? ', try --help' : '';
|
||||
throw new Error(`unknown option "${name}"${suffix}`);
|
||||
}
|
||||
}
|
||||
|
||||
reader(args, skip = 2) {
|
||||
return new Options.Reader(this, args, skip);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Options.Reader = class {
|
||||
constructor(options, args, skip) {
|
||||
this.options = options;
|
||||
this.args = args;
|
||||
this.skip = skip;
|
||||
}
|
||||
|
||||
forEach(callback) {
|
||||
let optind;
|
||||
|
||||
for (optind = this.skip; optind < this.args.length; optind++) {
|
||||
let arg = this.args[optind];
|
||||
|
||||
if (arg === '-' || !arg.startsWith('-')) {
|
||||
if (this.options.posixlyCorrect()) {
|
||||
break;
|
||||
}
|
||||
callback(null, arg);
|
||||
} else if (arg === '--') {
|
||||
optind++;
|
||||
break;
|
||||
} else {
|
||||
let name, value;
|
||||
|
||||
if (!arg.startsWith('--')) {
|
||||
for (;;) {
|
||||
name = arg.substring(0, 2);
|
||||
value = (name !== arg) ? arg.substring(2) : null;
|
||||
|
||||
if (this.options.needsArg(name) || value == null) {
|
||||
break;
|
||||
}
|
||||
callback(name, null);
|
||||
arg = '-' + value;
|
||||
}
|
||||
} else if (arg.indexOf('=') >= 3) {
|
||||
name = arg.split('=', 1)[0];
|
||||
if (!this.options.needsArg(name)) {
|
||||
throw new Error(`option "${name}" does not take an argument`);
|
||||
}
|
||||
value = arg.substring(name.length + 1);
|
||||
} else {
|
||||
name = arg;
|
||||
value = null;
|
||||
}
|
||||
|
||||
if (value === null && Number(this.options.needsArg(name)) > 0) {
|
||||
if (++optind === this.args.length) {
|
||||
throw new Error(`option "${name}" requires an argument`);
|
||||
}
|
||||
value = this.args[optind];
|
||||
}
|
||||
callback(name, value);
|
||||
}
|
||||
}
|
||||
|
||||
this.args.slice(optind).forEach(value => callback(null, value));
|
||||
}
|
||||
};
|
||||
|
||||
Object.defineProperty(Options, 'Reader', { 'enumerable': false });
|
||||
Object.defineProperty(Options.Reader, 'name', { value: 'Reader' });
|
||||
|
||||
|
||||
function start(programName, options, params, mainProgram) { // eslint-disable-line consistent-return
|
||||
let parsed = (params != null) ? params : new Params();
|
||||
|
||||
try {
|
||||
const version = process.version.match(/^v?(\d+)\.(\d+)/);
|
||||
|
||||
if (version.length < 3) {
|
||||
throw new Error('unable to obtain node version');
|
||||
} else if ((parseInt(version[1]) * 1000 + parseInt(version[2])) < 6009) {
|
||||
throw new Error('node version 6.9.0 or later required');
|
||||
}
|
||||
|
||||
if (params == null) {
|
||||
return mainProgram(options.reader(process.argv), name => options.fallback(name, parsed));
|
||||
} else {
|
||||
let nonopt = [];
|
||||
|
||||
options.reader(process.argv).forEach((name, value) => {
|
||||
if (name == null) {
|
||||
nonopt.push(value);
|
||||
} else {
|
||||
options.parse(name, value, parsed);
|
||||
}
|
||||
});
|
||||
return mainProgram(nonopt, parsed);
|
||||
}
|
||||
} catch (e) {
|
||||
if (parsed.excstk) {
|
||||
throw e;
|
||||
} else {
|
||||
process.stderr.write(`${process.argv.length >= 2 ? process.argv[1] : programName}: ${e.message}\n`);
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module.exports = Object.freeze({
|
||||
Params,
|
||||
Options,
|
||||
start
|
||||
});
|
154
bin/fncli.py
Normal file
154
bin/fncli.py
Normal file
@ -0,0 +1,154 @@
|
||||
#
|
||||
# Copyright (c) 2019 Dimitar Toshkov Zhekov <dimitar.zhekov@gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 2 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
|
||||
import sys
|
||||
import os
|
||||
import re
|
||||
|
||||
|
||||
class Params:
|
||||
def __init__(self):
|
||||
self.excstk = False
|
||||
|
||||
|
||||
class Options:
|
||||
def __init__(self, need_args, help_text, version_text):
|
||||
for name in need_args:
|
||||
if not re.fullmatch('(-[^-]|--[^=]+)', name):
|
||||
raise Exception('invalid option name "%s"' % name)
|
||||
|
||||
self.need_args = need_args
|
||||
self.help_text = help_text
|
||||
self.version_text = version_text
|
||||
|
||||
|
||||
def posixly_correct(self): # pylint: disable=no-self-use
|
||||
return 'POSIXLY_CORRECT' in os.environ
|
||||
|
||||
|
||||
def needs_arg(self, name):
|
||||
return name in self.need_args
|
||||
|
||||
|
||||
def fallback(self, name, params):
|
||||
if name == '--excstk':
|
||||
params.excstk = True
|
||||
elif name == '--help' and self.help_text is not None:
|
||||
sys.stdout.write(self.help_text)
|
||||
sys.exit(0)
|
||||
elif name == '--version' and self.version_text is not None:
|
||||
sys.stdout.write(self.version_text)
|
||||
sys.exit(0)
|
||||
else:
|
||||
suffix = ' (taking an argument?)' if self.needs_arg(name) else ''
|
||||
suffix += ', try --help' if self.help_text is not None else ''
|
||||
raise Exception('unknown option "%s"%s' % (name, suffix))
|
||||
|
||||
|
||||
def reader(self, args, skip_zero=True):
|
||||
return Options.Reader(self, args, skip_zero)
|
||||
|
||||
|
||||
class Reader:
|
||||
def __init__(self, options, args, skip_zero):
|
||||
self.options = options
|
||||
self.args = args
|
||||
self.skip_zero = skip_zero
|
||||
|
||||
|
||||
def __iter__(self):
|
||||
return Options.Reader.Iterator(self)
|
||||
|
||||
|
||||
class Iterator:
|
||||
def __init__(self, reader):
|
||||
self.options = reader.options
|
||||
self.args = reader.args
|
||||
self.optind = int(reader.skip_zero)
|
||||
self.chrind = 1
|
||||
self.endopt = False
|
||||
|
||||
|
||||
def __next__(self):
|
||||
if self.chrind == 0:
|
||||
self.optind += 1
|
||||
self.chrind = 1
|
||||
|
||||
if self.optind == len(self.args):
|
||||
raise StopIteration
|
||||
|
||||
arg = self.args[self.optind]
|
||||
|
||||
if self.endopt or arg == '-' or not arg.startswith('-'):
|
||||
self.endopt = self.options.posixly_correct()
|
||||
name = None
|
||||
value = arg
|
||||
elif arg == '--':
|
||||
self.chrind = 0
|
||||
self.endopt = True
|
||||
return next(self)
|
||||
elif not arg.startswith('--'):
|
||||
name = '-' + arg[self.chrind]
|
||||
self.chrind += 1
|
||||
if self.chrind < len(arg):
|
||||
if not self.options.needs_arg(name):
|
||||
return (name, None)
|
||||
value = arg[self.chrind:]
|
||||
else:
|
||||
value = None
|
||||
elif '=' in arg and arg.index('=') >= 3:
|
||||
name = arg.split('=', 1)[0]
|
||||
if not self.options.needs_arg(name):
|
||||
raise Exception('option "%s" does not take an argument' % name)
|
||||
value = arg[len(name) + 1:]
|
||||
else:
|
||||
name = arg
|
||||
value = None
|
||||
|
||||
if value is None and int(self.options.needs_arg(name)) > 0:
|
||||
self.optind += 1
|
||||
if self.optind == len(self.args):
|
||||
raise Exception('option "%s" requires an argument' % name)
|
||||
value = self.args[self.optind]
|
||||
|
||||
self.chrind = 0
|
||||
return (name, value)
|
||||
|
||||
|
||||
def start(program_name, options, params, main_program):
|
||||
parsed = Params() if params is None else params
|
||||
|
||||
try:
|
||||
if sys.hexversion < 0x3050000:
|
||||
raise Exception('python 3.5.0 or later required')
|
||||
|
||||
if params is None:
|
||||
return main_program(options.reader(sys.argv), lambda name: options.fallback(name, parsed))
|
||||
|
||||
nonopt = []
|
||||
|
||||
for [name, value] in options.reader(sys.argv):
|
||||
if name is None:
|
||||
nonopt.append(value)
|
||||
else:
|
||||
options.parse(name, value, parsed)
|
||||
|
||||
return main_program(nonopt, parsed)
|
||||
|
||||
except Exception as ex:
|
||||
if parsed.excstk:
|
||||
raise
|
||||
|
||||
sys.stderr.write('%s: %s\n' % (sys.argv[0] if sys.argv[0] else program_name, str(ex)))
|
||||
sys.exit(1)
|
213
bin/fnio.js
Normal file
213
bin/fnio.js
Normal file
@ -0,0 +1,213 @@
|
||||
//
|
||||
// Copyright (c) 2018 Dimitar Toshkov Zhekov <dimitar.zhekov@gmail.com>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of
|
||||
// the License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
|
||||
'use strict';
|
||||
|
||||
const fs = require('fs');
|
||||
|
||||
|
||||
const BINARY_ENCODING = 'latin1';
|
||||
|
||||
(function() {
|
||||
let orig = Buffer.alloc(256);
|
||||
|
||||
for (let i = 0; i < 256; i++) {
|
||||
orig[i] = i;
|
||||
}
|
||||
|
||||
const test = Buffer.from(orig.toString(BINARY_ENCODING), BINARY_ENCODING);
|
||||
|
||||
if (orig.compare(test) !== 0) {
|
||||
throw new Error(`the ${BINARY_ENCODING} encoding is not 8-bit clean`);
|
||||
}
|
||||
})();
|
||||
|
||||
|
||||
const BLOCK_SIZE = 4096;
|
||||
|
||||
class InputStream {
|
||||
constructor(fileName, encoding = BINARY_ENCODING) {
|
||||
if (fileName != null) {
|
||||
this.fd = fs.openSync(fileName, 'r');
|
||||
this.stName = fileName;
|
||||
} else {
|
||||
this.fd = process.stdin.fd;
|
||||
this.stName = '<stdin>';
|
||||
}
|
||||
this.encoding = encoding;
|
||||
this.lineNo = 0;
|
||||
this.eof = false;
|
||||
this.lines = [];
|
||||
this.index = 0;
|
||||
this.buffer = Buffer.alloc(BLOCK_SIZE);
|
||||
this.remainder = '';
|
||||
}
|
||||
|
||||
close() {
|
||||
this.lineNo = 0;
|
||||
this.eof = false;
|
||||
fs.closeSync(this.fd);
|
||||
}
|
||||
|
||||
location() {
|
||||
let location = ' ';
|
||||
|
||||
if (this.eof) {
|
||||
location = 'EOF: ';
|
||||
} else if (this.lineNo > 0) {
|
||||
location = `${this.lineNo}: `;
|
||||
|
||||
}
|
||||
return `${this.stName}:${location}`;
|
||||
}
|
||||
|
||||
_readBlock() {
|
||||
for (;;) {
|
||||
try {
|
||||
return fs.readSync(this.fd, this.buffer, 0, BLOCK_SIZE);
|
||||
} catch (e) {
|
||||
if (e.code === 'EOF') {
|
||||
return 0;
|
||||
}
|
||||
if (e.code !== 'EAGAIN') {
|
||||
this.lineNo = 0;
|
||||
this.eof = false;
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
readLine() {
|
||||
return this.readLines(line => line);
|
||||
}
|
||||
|
||||
readLines(callback) {
|
||||
let line;
|
||||
|
||||
do {
|
||||
while (this.index < this.lines.length) {
|
||||
this.lineNo++;
|
||||
line = callback(this.lines[this.index++].trimRight());
|
||||
|
||||
if (line != null) {
|
||||
return line;
|
||||
}
|
||||
}
|
||||
|
||||
var count = this._readBlock();
|
||||
|
||||
this.index = 0;
|
||||
this.lines = (this.remainder + this.buffer.toString(this.encoding, 0, count)).split('\n');
|
||||
this.remainder = this.lines.pop();
|
||||
this.eof = false;
|
||||
} while (count > 0);
|
||||
|
||||
if (this.remainder.length > 0) {
|
||||
this.lineNo++;
|
||||
line = callback(this.remainder.trimRight());
|
||||
this.remainder = '';
|
||||
} else {
|
||||
this.eof = true;
|
||||
line = null;
|
||||
}
|
||||
|
||||
return line;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class OutputStream {
|
||||
constructor(fileName) {
|
||||
if (fileName != null) {
|
||||
this.fd = fs.openSync(fileName, 'w');
|
||||
this.stName = fileName;
|
||||
} else {
|
||||
this.fd = process.stdout.fd;
|
||||
this.stName = '<stdout>';
|
||||
}
|
||||
this.fbbuf = Buffer.alloc(4);
|
||||
this.closeAttempt = false;
|
||||
}
|
||||
|
||||
close() {
|
||||
this.closeAttempt = true;
|
||||
fs.closeSync(this.fd);
|
||||
}
|
||||
|
||||
destroy() {
|
||||
let errors = '';
|
||||
|
||||
if (this.fd !== process.stdout.fd) {
|
||||
if (!this.closeAttempt) {
|
||||
try {
|
||||
fs.closeSync(this.fd);
|
||||
} catch (e) {
|
||||
errors += `\n${this.stName}: close: ${e.message}`;
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
fs.unlinkSync(this.stName);
|
||||
} catch (e) {
|
||||
errors += `\n${this.stName}: unlink: ${e.message}`;
|
||||
}
|
||||
}
|
||||
|
||||
return errors;
|
||||
}
|
||||
|
||||
location() {
|
||||
return this.stName + ': ';
|
||||
}
|
||||
|
||||
write(buffer) {
|
||||
fs.writeSync(this.fd, buffer, 0, buffer.length);
|
||||
}
|
||||
|
||||
write8(value) {
|
||||
this.fbbuf.writeUInt8(value, 0);
|
||||
fs.writeSync(this.fd, this.fbbuf, 0, 1);
|
||||
}
|
||||
|
||||
write16(value) {
|
||||
this.fbbuf.writeUInt16LE(value, 0);
|
||||
fs.writeSync(this.fd, this.fbbuf, 0, 2);
|
||||
}
|
||||
|
||||
write32(value) {
|
||||
this.fbbuf.writeUInt32LE(value, 0);
|
||||
fs.writeSync(this.fd, this.fbbuf, 0, 4);
|
||||
}
|
||||
|
||||
writeLine(bstr) {
|
||||
fs.writeSync(this.fd, bstr + '\n', null, BINARY_ENCODING);
|
||||
}
|
||||
|
||||
writeProp(name, value) {
|
||||
this.writeLine((name + ' ' + value).trim());
|
||||
}
|
||||
|
||||
writeZStr(bstr, numZeros) {
|
||||
fs.writeSync(this.fd, bstr, null, BINARY_ENCODING);
|
||||
this.write(Buffer.alloc(numZeros));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
module.exports = Object.freeze({
|
||||
BINARY_ENCODING,
|
||||
InputStream,
|
||||
OutputStream
|
||||
});
|
141
bin/fnio.py
Normal file
141
bin/fnio.py
Normal file
@ -0,0 +1,141 @@
|
||||
#
|
||||
# Copyright (c) 2018 Dimitar Toshkov Zhekov <dimitar.zhekov@gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 2 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
|
||||
import codecs
|
||||
import struct
|
||||
import sys
|
||||
import os
|
||||
|
||||
|
||||
BINARY_ENCODING = '_fnio_binary'
|
||||
|
||||
class InputStream:
|
||||
def __init__(self, file_name, encoding=BINARY_ENCODING):
|
||||
if file_name is not None:
|
||||
if encoding == BINARY_ENCODING:
|
||||
self.file = open(file_name, 'rb')
|
||||
else:
|
||||
self.file = open(file_name, 'r', encoding=encoding)
|
||||
|
||||
self.st_name = file_name
|
||||
else:
|
||||
if encoding == BINARY_ENCODING:
|
||||
self.file = sys.stdin.buffer
|
||||
elif encoding is None:
|
||||
self.file = sys.stdin
|
||||
else:
|
||||
self.file = codecs.getreader(encoding)(sys.stdin.buffer)
|
||||
|
||||
self.st_name = '<stdin>'
|
||||
|
||||
self.line_no = 0
|
||||
self.eof = False
|
||||
|
||||
|
||||
def close(self):
|
||||
self.line_no = 0
|
||||
self.eof = False
|
||||
self.file.close()
|
||||
|
||||
|
||||
def location(self):
|
||||
return '%s:%s' % (self.st_name, 'EOF: ' if self.eof else '%d: ' % self.line_no if self.line_no > 0 else ' ')
|
||||
|
||||
|
||||
def read_line(self):
|
||||
return self.read_lines(lambda line: line)
|
||||
|
||||
|
||||
def read_lines(self, callback):
|
||||
try:
|
||||
for line in self.file:
|
||||
self.line_no += 1
|
||||
self.eof = False
|
||||
line = callback(line.rstrip())
|
||||
if line is not None:
|
||||
return line
|
||||
except OSError:
|
||||
self.line_no = 0
|
||||
self.eof = False
|
||||
raise
|
||||
|
||||
self.eof = True
|
||||
return None
|
||||
|
||||
|
||||
class OutputStream:
|
||||
def __init__(self, file_name):
|
||||
if file_name is not None:
|
||||
self.file = open(file_name, 'wb')
|
||||
self.st_name = file_name
|
||||
else:
|
||||
self.file = sys.stdout.buffer
|
||||
self.st_name = '<stdout>'
|
||||
|
||||
self.close_attempt = False
|
||||
|
||||
|
||||
def close(self):
|
||||
self.close_attempt = True
|
||||
self.file.close()
|
||||
|
||||
|
||||
def destroy(self):
|
||||
errors = ''
|
||||
|
||||
if self.file != sys.stdout.buffer:
|
||||
if not self.close_attempt:
|
||||
try:
|
||||
self.file.close()
|
||||
except Exception as ex:
|
||||
errors += '\n%s: close: %s' % (self.st_name, str(ex))
|
||||
|
||||
try:
|
||||
os.remove(self.st_name)
|
||||
except Exception as ex:
|
||||
errors += '\n%s: unlink: %s' % (self.st_name, str(ex))
|
||||
|
||||
return errors
|
||||
|
||||
|
||||
def location(self):
|
||||
return self.st_name + ': '
|
||||
|
||||
|
||||
def write(self, buffer):
|
||||
self.file.write(buffer)
|
||||
|
||||
|
||||
def write8(self, value):
|
||||
self.file.write(struct.pack('B', value))
|
||||
|
||||
|
||||
def write16(self, value):
|
||||
self.file.write(struct.pack('<H', value))
|
||||
|
||||
|
||||
def write32(self, value):
|
||||
self.file.write(struct.pack('<L', value))
|
||||
|
||||
|
||||
def write_line(self, bstr):
|
||||
self.file.write(bstr + b'\n')
|
||||
|
||||
|
||||
def write_prop(self, name, value):
|
||||
self.write_line((bytes(name, 'ascii') + b' ' + value).strip())
|
||||
|
||||
|
||||
def write_zstr(self, bstr, num_zeros):
|
||||
self.file.write(bstr + bytes(num_zeros))
|
120
bin/fnutil.js
Normal file
120
bin/fnutil.js
Normal file
@ -0,0 +1,120 @@
|
||||
//
|
||||
// Copyright (c) 2018 Dimitar Toshkov Zhekov <dimitar.zhekov@gmail.com>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of
|
||||
// the License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
|
||||
'use strict';
|
||||
|
||||
|
||||
const UNICODE_MAX = 1114111; // 0x10FFFF
|
||||
|
||||
function parseDec(name, s, minValue = 0, maxValue = UNICODE_MAX) {
|
||||
if (s.match(/^\s*-?\d+\s*$/) == null) {
|
||||
throw new Error(`invalid ${name} format`);
|
||||
}
|
||||
|
||||
const value = parseInt(s, 10);
|
||||
|
||||
if (minValue != null && value < minValue) {
|
||||
throw new Error(`${name} must be >= ${minValue}`);
|
||||
}
|
||||
if (maxValue != null && value > maxValue) {
|
||||
throw new Error(`${name} must be <= ${maxValue}`);
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
function parseHex(name, s, minValue = 0, maxValue = UNICODE_MAX) {
|
||||
if (s.match(/^\s*(0[xX])?[\dA-Fa-f]+\s*$/) == null) {
|
||||
throw new Error(`invalid ${name} format`);
|
||||
}
|
||||
|
||||
const value = parseInt(s, 16);
|
||||
|
||||
if (minValue != null && value < minValue) {
|
||||
throw new Error(`${name} must be >= ` + minValue.toString(16).toUpperCase());
|
||||
}
|
||||
if (maxValue != null && value > maxValue) {
|
||||
throw new Error(`${name} must be <= ` + maxValue.toString(16).toUpperCase());
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
function unihex(code) {
|
||||
return ('000' + code.toString(16).toUpperCase()).replace(/0+(?=[\dA-F]{4})/, '');
|
||||
}
|
||||
|
||||
function round(value) {
|
||||
let result = Math.round(value);
|
||||
|
||||
return result - Number(result % 2 !== 0 && result - value === 0.5);
|
||||
}
|
||||
|
||||
function quote(s) {
|
||||
return '"' + s.replace(/"/g, '""') + '"';
|
||||
}
|
||||
|
||||
function unquote(s, name) {
|
||||
if (s.length >= 2 && s.startsWith('"') && s.endsWith('"')) {
|
||||
s = s.substring(1, s.length - 1).replace(/""/g, '"');
|
||||
} else if (name != null) {
|
||||
throw new Error(name + ' must be quoted');
|
||||
}
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
function warning(prefix, message) {
|
||||
if (prefix.endsWith(':')) {
|
||||
prefix += ' ';
|
||||
} else if (prefix.length > 0 && !prefix.endsWith(': ')) {
|
||||
prefix += ': ';
|
||||
}
|
||||
process.stderr.write(`${prefix}warning: ${message}\n`);
|
||||
}
|
||||
|
||||
function splitWords(name, value, count) {
|
||||
const words = value.split(/\s+/, count + 1);
|
||||
|
||||
if (words.length !== count) {
|
||||
throw new Error(`${name} must contain ${count} values`);
|
||||
}
|
||||
|
||||
return words;
|
||||
}
|
||||
|
||||
const GPL2PLUS_LICENSE = ('' +
|
||||
'This program is free software; you can redistribute it and/or\n' +
|
||||
'modify it under the terms of the GNU General Public License as\n' +
|
||||
'published by the Free Software Foundation; either version 2 of\n' +
|
||||
'the License, or (at your option) any later version.\n' +
|
||||
'\n' +
|
||||
'This program is distributed in the hope that it will be useful,\n' +
|
||||
'but WITHOUT ANY WARRANTY; without even the implied warranty of\n' +
|
||||
'MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n' +
|
||||
'GNU General Public License for more details.\n');
|
||||
|
||||
|
||||
module.exports = Object.freeze({
|
||||
UNICODE_MAX,
|
||||
parseDec,
|
||||
parseHex,
|
||||
unihex,
|
||||
round,
|
||||
quote,
|
||||
unquote,
|
||||
warning,
|
||||
splitWords,
|
||||
GPL2PLUS_LICENSE
|
||||
});
|
92
bin/fnutil.py
Normal file
92
bin/fnutil.py
Normal file
@ -0,0 +1,92 @@
|
||||
#
|
||||
# Copyright (c) 2018 Dimitar Toshkov Zhekov <dimitar.zhekov@gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 2 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
|
||||
import sys
|
||||
import re
|
||||
|
||||
|
||||
UNICODE_MAX = 1114111 # 0x10FFFF
|
||||
|
||||
|
||||
def parse_dec(name, s, min_value=0, max_value=UNICODE_MAX):
|
||||
try:
|
||||
value = int(s)
|
||||
except ValueError:
|
||||
raise Exception('invalid %s format' % name)
|
||||
|
||||
if min_value is not None and value < min_value:
|
||||
raise Exception('%s must be >= %d' % (name, min_value))
|
||||
|
||||
if max_value is not None and value > max_value:
|
||||
raise Exception('%s must be <= %d' % (name, max_value))
|
||||
|
||||
return value
|
||||
|
||||
|
||||
def parse_hex(name, s, min_value=0, max_value=UNICODE_MAX):
|
||||
try:
|
||||
value = int(s, 16)
|
||||
except ValueError:
|
||||
raise Exception('invalid %s format' % name)
|
||||
|
||||
if min_value is not None and value < min_value:
|
||||
raise Exception('%s must be >= %X' % (name, min_value))
|
||||
|
||||
if max_value is not None and value > max_value:
|
||||
raise Exception('%s must be <= %X' % (name, max_value))
|
||||
|
||||
return value
|
||||
|
||||
|
||||
def quote(bstr):
|
||||
return b'"%s"' % bstr.replace(b'"', b'""')
|
||||
|
||||
|
||||
def unquote(bstr, name=None):
|
||||
if len(bstr) >= 2 and bstr.startswith(b'"') and bstr.endswith(b'"'):
|
||||
bstr = bstr[1 : len(bstr) - 1].replace(b'""', b'"')
|
||||
elif name is not None:
|
||||
raise Exception(name + ' must be quoted')
|
||||
|
||||
return bstr
|
||||
|
||||
|
||||
def warning(prefix, message):
|
||||
if prefix.endswith(':'):
|
||||
prefix += ' '
|
||||
elif prefix and not prefix.endswith(': '):
|
||||
prefix += ': '
|
||||
|
||||
sys.stderr.write('%swarning: %s\n' % (prefix, message))
|
||||
|
||||
|
||||
def split_words(name, bstr, count):
|
||||
words = re.split(br'\s+', bstr, count)
|
||||
|
||||
if len(words) != count:
|
||||
raise Exception('%s must contain %d values' % (name, count))
|
||||
|
||||
return words
|
||||
|
||||
|
||||
GPL2PLUS_LICENSE = ('' +
|
||||
'This program is free software; you can redistribute it and/or\n' +
|
||||
'modify it under the terms of the GNU General Public License as\n' +
|
||||
'published by the Free Software Foundation; either version 2 of\n' +
|
||||
'the License, or (at your option) any later version.\n' +
|
||||
'\n' +
|
||||
'This program is distributed in the hope that it will be useful,\n' +
|
||||
'but WITHOUT ANY WARRANTY; without even the implied warranty of\n' +
|
||||
'MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n' +
|
||||
'GNU General Public License for more details.\n')
|
242
bin/ucstoany.js
Normal file
242
bin/ucstoany.js
Normal file
@ -0,0 +1,242 @@
|
||||
//
|
||||
// Copyright (c) 2019 Dimitar Toshkov Zhekov <dimitar.zhekov@gmail.com>
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of
|
||||
// the License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
|
||||
'use strict';
|
||||
|
||||
const fnutil = require('./fnutil.js');
|
||||
const fncli = require('./fncli.js');
|
||||
const fnio = require('./fnio.js');
|
||||
const bdf = require('./bdf.js');
|
||||
|
||||
|
||||
class Params extends fncli.Params {
|
||||
constructor() {
|
||||
super();
|
||||
this.filter = false;
|
||||
this.family = null;
|
||||
this.output = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
const HELP = ('' +
|
||||
'usage: ucstoany [-f] [-F FAMILY] [-o OUTPUT] INPUT REGISTRY ENCODING TABLE...\n' +
|
||||
'Generate a BDF font subset.\n' +
|
||||
'\n' +
|
||||
' -f, --filter Discard characters with unicode FFFF; with registry ISO10646,\n' +
|
||||
' encode the first 32 characters with their indexes; with other\n' +
|
||||
' registries, encode all characters with indexes\n' +
|
||||
' -F FAMILY output font family name (default = input)\n' +
|
||||
' -o OUTPUT output file (default = stdout)\n' +
|
||||
' TABLE text file, one hexadecimal unicode per line\n' +
|
||||
' --help display this help and exit\n' +
|
||||
' --version display the program version and license, and exit\n' +
|
||||
' --excstk display the exception stack on error\n' +
|
||||
'\n' +
|
||||
'The input must be a BDF 2.1 font encoded in the unicode range.\n' +
|
||||
'Unlike ucs2any, all TABLE-s form a single subset of the input font.\n');
|
||||
|
||||
const VERSION = 'ucstoany 1.55, Copyright (C) 2019 Dimitar Toshkov Zhekov\n\n' + fnutil.GPL2PLUS_LICENSE;
|
||||
|
||||
class Options extends fncli.Options {
|
||||
constructor() {
|
||||
super(['-F', '-o'], HELP, VERSION);
|
||||
}
|
||||
|
||||
parse(name, value, params) {
|
||||
switch (name) {
|
||||
case '-f':
|
||||
case '--filter':
|
||||
params.filter = true;
|
||||
break;
|
||||
case '-F':
|
||||
if (value.includes('-')) {
|
||||
throw new Error('family name may not contain "-"');
|
||||
}
|
||||
params.family = value;
|
||||
break;
|
||||
case '-o':
|
||||
params.output = value;
|
||||
break;
|
||||
default:
|
||||
this.fallback(name, params);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function mainProgram(nonopt, parsed) {
|
||||
if (nonopt.length < 4) {
|
||||
throw new Error('invalid number of arguments, try --help');
|
||||
}
|
||||
|
||||
const input = nonopt[0];
|
||||
const registry = nonopt[1];
|
||||
const encoding = nonopt[2];
|
||||
let newCodes = [];
|
||||
|
||||
if (!registry.match(/^[A-Za-z][\w.:()]*$/) || !encoding.match(/^[\w.:()]+$/)) {
|
||||
throw new Error('invalid registry or encoding');
|
||||
}
|
||||
|
||||
// READ INPUT
|
||||
let ifs = new fnio.InputStream(input);
|
||||
|
||||
try {
|
||||
var oldFont = bdf.Font.read(ifs);
|
||||
ifs.close();
|
||||
} catch (e) {
|
||||
e.message = ifs.location() + e.message;
|
||||
throw e;
|
||||
}
|
||||
|
||||
// READ TABLES
|
||||
nonopt.slice(3).forEach(name => {
|
||||
ifs = new fnio.InputStream(name);
|
||||
|
||||
try {
|
||||
ifs.readLines(line => {
|
||||
newCodes.push(fnutil.parseHex('unicode', line));
|
||||
});
|
||||
ifs.close();
|
||||
} catch (e) {
|
||||
e.message = ifs.location() + e.message;
|
||||
throw e;
|
||||
}
|
||||
});
|
||||
|
||||
if (newCodes.length === 0) {
|
||||
throw new Error('no characters in the output font');
|
||||
}
|
||||
|
||||
// CREATE GLYPHS
|
||||
let newFont = new bdf.Font();
|
||||
let charMap = [];
|
||||
let index = 0;
|
||||
let unstart = 0;
|
||||
|
||||
if (parsed.filter) {
|
||||
unstart = (registry === 'ISO10646') ? 32 : bdf.CHARS_MAX;
|
||||
}
|
||||
|
||||
// faster than Map() for <= 4K chars
|
||||
oldFont.chars.forEach(char => (charMap[char.code] = char));
|
||||
|
||||
newCodes.forEach(code => {
|
||||
let oldChar = charMap[code];
|
||||
let uniFFFF = (oldChar == null);
|
||||
|
||||
if (code === 0xFFFF && parsed.filter) {
|
||||
index++;
|
||||
return;
|
||||
}
|
||||
|
||||
if (uniFFFF) {
|
||||
if (code !== 0xFFFF) {
|
||||
throw new Error(`${input} does not contain U+${fnutil.unihex(code)}`);
|
||||
}
|
||||
|
||||
if (oldFont.defaultCode !== -1) {
|
||||
oldChar = charMap[oldFont.defaultCode];
|
||||
} else {
|
||||
oldChar = charMap[0xFFFD];
|
||||
|
||||
if (oldChar == null) {
|
||||
throw new Error(`${input} does not contain U+FFFF, and no replacement found`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let newChar = Object.assign(new bdf.Char(), oldChar);
|
||||
|
||||
newChar.code = index >= unstart ? code : index;
|
||||
index++;
|
||||
newChar.props = newChar.props.clone();
|
||||
newChar.props.set('ENCODING', newChar.code.toString());
|
||||
newFont.chars.push(newChar);
|
||||
|
||||
if (uniFFFF) {
|
||||
newChar.props.set('STARTCHAR', 'uniFFFF');
|
||||
} else if (oldChar.code === oldFont.defaultCode || (oldChar.code === 0xFFFD && newFont.defaultCode === -1)) {
|
||||
newFont.defaultCode = newChar.code;
|
||||
}
|
||||
});
|
||||
|
||||
// CREATE HEADER
|
||||
let numProps;
|
||||
let family = (parsed.family !== null) ? parsed.family : oldFont.xlfd[bdf.XLFD.FAMILY_NAME];
|
||||
|
||||
oldFont.props.forEach((name, value) => {
|
||||
switch (name) {
|
||||
case 'FONT':
|
||||
newFont.xlfd = oldFont.xlfd.slice();
|
||||
newFont.xlfd[bdf.XLFD.FAMILY_NAME] = family;
|
||||
newFont.xlfd[bdf.XLFD.CHARSET_REGISTRY] = registry;
|
||||
newFont.xlfd[bdf.XLFD.CHARSET_ENCODING] = encoding;
|
||||
value = newFont.xlfd.join('-');
|
||||
break;
|
||||
case 'STARTPROPERTIES':
|
||||
numProps = fnutil.parseDec(name, value, 1);
|
||||
break;
|
||||
case 'FAMILY_NAME':
|
||||
value = fnutil.quote(family);
|
||||
break;
|
||||
case 'CHARSET_REGISTRY':
|
||||
value = fnutil.quote(registry);
|
||||
break;
|
||||
case 'CHARSET_ENCODING':
|
||||
value = fnutil.quote(encoding);
|
||||
break;
|
||||
case 'DEFAULT_CHAR':
|
||||
if (newFont.defaultCode !== -1) {
|
||||
value = newFont.defaultCode.toString();
|
||||
} else {
|
||||
numProps -= 1;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 'ENDPROPERTIES':
|
||||
if (newFont.defaultCode !== -1 && newFont.props.get('DEFAULT_CHAR') == null) {
|
||||
newFont.props.add('DEFAULT_CHAR', newFont.defaultCode.toString());
|
||||
numProps += 1;
|
||||
}
|
||||
newFont.props.set('STARTPROPERTIES', numProps.toString());
|
||||
break;
|
||||
case 'CHARS':
|
||||
value = newFont.chars.length.toString();
|
||||
break;
|
||||
}
|
||||
newFont.props.add(name, value);
|
||||
});
|
||||
|
||||
// COPY FIELDS
|
||||
newFont.bbx = oldFont.bbx;
|
||||
newFont.finis = oldFont.finis;
|
||||
|
||||
// WRITE OUTPUT
|
||||
let ofs = new fnio.OutputStream(parsed.output);
|
||||
|
||||
try {
|
||||
newFont.write(ofs);
|
||||
ofs.close();
|
||||
} catch (e) {
|
||||
e.message = ofs.location() + e.message + ofs.destroy();
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (require.main === module) {
|
||||
fncli.start('ucstoany.js', new Options(), new Params(), mainProgram);
|
||||
}
|
204
bin/ucstoany.py
Normal file
204
bin/ucstoany.py
Normal file
@ -0,0 +1,204 @@
|
||||
#
|
||||
# Copyright (c) 2019 Dimitar Toshkov Zhekov <dimitar.zhekov@gmail.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 2 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
|
||||
import re
|
||||
import copy
|
||||
|
||||
import fnutil
|
||||
import fncli
|
||||
import fnio
|
||||
import bdf
|
||||
|
||||
|
||||
class Params(fncli.Params):
|
||||
def __init__(self):
|
||||
fncli.Params.__init__(self)
|
||||
self.filter = False
|
||||
self.family = None
|
||||
self.output = None
|
||||
|
||||
|
||||
HELP = ('' +
|
||||
'usage: ucstoany [-f] [-F FAMILY] [-o OUTPUT] INPUT REGISTRY ENCODING TABLE...\n' +
|
||||
'Generate a BDF font subset.\n' +
|
||||
'\n' +
|
||||
' -f, --filter Discard characters with unicode FFFF; with registry ISO10646,\n' +
|
||||
' encode the first 32 characters with their indexes; with other\n' +
|
||||
' registries, encode all characters with indexes\n' +
|
||||
' -F FAMILY output font family name (default = input)\n' +
|
||||
' -o OUTPUT output file (default = stdout)\n' +
|
||||
' TABLE text file, one hexadecimal unicode per line\n' +
|
||||
' --help display this help and exit\n' +
|
||||
' --version display the program version and license, and exit\n' +
|
||||
' --excstk display the exception stack on error\n' +
|
||||
'\n' +
|
||||
'The input must be a BDF 2.1 font encoded in the unicode range.\n' +
|
||||
'Any COMMENT-s are discarded, duplicate properties are collapsed.\n' +
|
||||
'Unlike ucs2any, all TABLE-s form a single subset of the input font.\n')
|
||||
|
||||
VERSION = 'ucstoany 1.55, Copyright (C) 2019 Dimitar Toshkov Zhekov\n\n' + fnutil.GPL2PLUS_LICENSE
|
||||
|
||||
class Options(fncli.Options):
|
||||
def __init__(self):
|
||||
fncli.Options.__init__(self, ['-F', '-o'], HELP, VERSION)
|
||||
|
||||
|
||||
def parse(self, name, value, params):
|
||||
if name in ['-f', '--filter']:
|
||||
params.filter = True
|
||||
elif name == '-F':
|
||||
params.family = bytes(value, 'ascii')
|
||||
if '-' in value:
|
||||
raise Exception('family name may not contain "-"')
|
||||
elif name == '-o':
|
||||
params.output = value
|
||||
else:
|
||||
self.fallback(name, params)
|
||||
|
||||
|
||||
def main_program(nonopt, parsed):
|
||||
bstr = lambda number: bytes(str(number), 'ascii')
|
||||
|
||||
# NON-OPTIONS
|
||||
if len(nonopt) < 4:
|
||||
raise Exception('invalid number of arguments, try --help')
|
||||
|
||||
input = nonopt[0]
|
||||
registry = nonopt[1]
|
||||
encoding = nonopt[2]
|
||||
new_codes = []
|
||||
|
||||
if not re.fullmatch(r'[A-Za-z][\w.:()]*', registry) or not re.fullmatch(r'[\w.:()]+', encoding):
|
||||
raise Exception('invalid registry or encoding')
|
||||
|
||||
# READ INPUT
|
||||
ifs = fnio.InputStream(input)
|
||||
|
||||
try:
|
||||
old_font = bdf.Font.read(ifs)
|
||||
ifs.close()
|
||||
except Exception as ex:
|
||||
raise Exception(ifs.location() + str(ex))
|
||||
|
||||
# READ TABLES
|
||||
def load_code(line):
|
||||
new_codes.append(fnutil.parse_hex('unicode', line))
|
||||
|
||||
for name in nonopt[3:]:
|
||||
ifs = fnio.InputStream(name)
|
||||
|
||||
try:
|
||||
ifs.read_lines(load_code)
|
||||
ifs.close()
|
||||
except Exception as ex:
|
||||
raise Exception(ifs.location() + str(ex))
|
||||
|
||||
if not new_codes:
|
||||
raise Exception('no characters in the output font')
|
||||
|
||||
# CREATE GLYPHS
|
||||
new_font = bdf.Font()
|
||||
charmap = {char.code:char for char in old_font.chars}
|
||||
index = 0
|
||||
unstart = 0
|
||||
family = parsed.family if parsed.family is not None else old_font.xlfd[bdf.XLFD.FAMILY_NAME]
|
||||
|
||||
if parsed.filter:
|
||||
unstart = 32 if registry == 'ISO10646' else bdf.CHARS_MAX
|
||||
|
||||
for code in new_codes:
|
||||
if code == 0xFFFF and parsed.filter:
|
||||
index += 1
|
||||
continue
|
||||
|
||||
if code in charmap:
|
||||
old_char = charmap[code]
|
||||
uni_ffff = False
|
||||
else:
|
||||
uni_ffff = True
|
||||
|
||||
if code != 0xFFFF:
|
||||
raise Exception('%s does not contain U+%04X' % (input, code))
|
||||
|
||||
if old_font.default_code != -1:
|
||||
old_char = charmap[old_font.default_code]
|
||||
elif 0xFFFD in charmap:
|
||||
old_char = charmap[0xFFFD]
|
||||
else:
|
||||
raise Exception('%s does not contain U+FFFF, and no replacement found' % input)
|
||||
|
||||
new_char = copy.copy(old_char)
|
||||
new_char.code = code if index >= unstart else index
|
||||
index += 1
|
||||
new_char.props = new_char.props.clone()
|
||||
new_char.props.set('ENCODING', bstr(new_char.code))
|
||||
new_font.chars.append(new_char)
|
||||
|
||||
if uni_ffff:
|
||||
new_char.props.set('STARTCHAR', b'uniFFFF')
|
||||
elif old_char.code == old_font.default_code or (old_char.code == 0xFFFD and new_font.default_code == -1):
|
||||
new_font.default_code = new_char.code
|
||||
|
||||
# CREATE HEADER
|
||||
registry = bytes(registry, 'ascii')
|
||||
encoding = bytes(encoding, 'ascii')
|
||||
|
||||
for [name, value] in old_font.props:
|
||||
if name == 'FONT':
|
||||
new_font.xlfd = old_font.xlfd[:]
|
||||
new_font.xlfd[bdf.XLFD.FAMILY_NAME] = family
|
||||
new_font.xlfd[bdf.XLFD.CHARSET_REGISTRY] = registry
|
||||
new_font.xlfd[bdf.XLFD.CHARSET_ENCODING] = encoding
|
||||
value = b'-'.join(new_font.xlfd)
|
||||
elif name == 'STARTPROPERTIES':
|
||||
num_props = fnutil.parse_dec(name, value, 1)
|
||||
elif name == 'FAMILY_NAME':
|
||||
value = fnutil.quote(family)
|
||||
elif name == 'CHARSET_REGISTRY':
|
||||
value = fnutil.quote(registry)
|
||||
elif name == 'CHARSET_ENCODING':
|
||||
value = fnutil.quote(encoding)
|
||||
elif name == 'DEFAULT_CHAR':
|
||||
if new_font.default_code != -1:
|
||||
value = bstr(new_font.default_code)
|
||||
else:
|
||||
num_props -= 1
|
||||
continue
|
||||
elif name == 'ENDPROPERTIES':
|
||||
if new_font.default_code != -1 and new_font.props.get('DEFAULT_CHAR') is None:
|
||||
new_font.props.add('DEFAULT_CHAR', bstr(new_font.default_code))
|
||||
num_props += 1
|
||||
|
||||
new_font.props.set('STARTPROPERTIES', bstr(num_props))
|
||||
elif name == 'CHARS':
|
||||
value = bstr(len(new_font.chars))
|
||||
|
||||
new_font.props.add(name, value)
|
||||
|
||||
# COPY FIELDS
|
||||
new_font.bbx = old_font.bbx
|
||||
new_font.finis = old_font.finis
|
||||
|
||||
# WRITE OUTPUT
|
||||
ofs = fnio.OutputStream(parsed.output)
|
||||
|
||||
try:
|
||||
new_font.write(ofs)
|
||||
ofs.close()
|
||||
except Exception as ex:
|
||||
raise Exception(ofs.location() + str(ex) + ofs.destroy())
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
fncli.start('ucstoany.py', Options(), Params(), main_program)
|
66
configure
vendored
Executable file
66
configure
vendored
Executable file
@ -0,0 +1,66 @@
|
||||
#!/bin/sh
|
||||
|
||||
if test "$1" = "--help" ; then
|
||||
echo usage: $0 [--var=VALUE] [VAR=VALUE] ...
|
||||
echo
|
||||
cat configure.help 2> /dev/null && echo
|
||||
echo "Any variables not explicitly set are reset to their defaults"
|
||||
elif test "$1" = "--version" ; then
|
||||
cat << EOT
|
||||
micro configure 0.21, Copyright (C) 2015 Dimitar Toshkov Zhekov
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation; either version 2 of
|
||||
the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
Report bugs to dimitar.zhekov@gmail.com
|
||||
EOT
|
||||
elif test -z `printf "\r"` ; then
|
||||
echo "$0: printf failure"
|
||||
false
|
||||
elif test -f Makefile ; then
|
||||
if test -f Makefile.in ; then
|
||||
cp -fp Makefile.in Makefile
|
||||
else
|
||||
cp -p Makefile Makefile.in
|
||||
fi
|
||||
w=`printf "[\t ]*"`
|
||||
r=`printf "\r"`
|
||||
l="[a-z][a-z0-9-]*[^-]"
|
||||
for i do
|
||||
if test "$i" != "`echo "$i" | sed -e 1q`" ; then
|
||||
echo "$0: `echo "$i" | sed -e "s/$r/^M/" -e 1q`^J...: contains line feed" 1>&2
|
||||
elif echo "$i" | grep "$r" > /dev/null ; then
|
||||
echo "$0: `echo "$i" | sed -e "s/$r.*//"`^M...: contains carriage return" 1>&2
|
||||
elif test -n "$i" ; then
|
||||
if echo "$i" | grep -E "^--$l=|^[A-Z][A-Z0-9_]*[^_]=" > /dev/null ; then
|
||||
n=`echo "$i" | sed -e "s$r^-*$r$r" -e "s$r=.*$r$r" | sed -e "s/-/_/g"`
|
||||
if grep -E "^$n$w:?=" Makefile > /dev/null ; then
|
||||
cp -f Makefile Makefile.$$
|
||||
sed -e "s$r^\($n$w:*=$w\).*$r\1`echo "$i" | sed -e "s$r^[^=]*=$r$r"`$r" Makefile.$$ > Makefile
|
||||
grep -E "^$n$w:?=" Makefile /dev/null
|
||||
else
|
||||
echo "$0: $n: not found in Makefile" 1>&2
|
||||
fi
|
||||
unset n
|
||||
else
|
||||
echo "$0: $i: not recognized" 1>&2
|
||||
fi
|
||||
fi
|
||||
done
|
||||
unset i l r w
|
||||
if test -f Makefile.$$ ; then
|
||||
rm -f Makefile.$$
|
||||
else
|
||||
rm -f Makefile.in
|
||||
fi
|
||||
else
|
||||
echo "$0: Makefile: not found" 1>&2
|
||||
false
|
||||
fi
|
13
configure.help
Normal file
13
configure.help
Normal file
@ -0,0 +1,13 @@
|
||||
To assign environment variables (e.g., CC, CFLAGS...), specify them as
|
||||
NAME=VALUE. See the README for description of all options and targets.
|
||||
|
||||
Defaults for the options are specified in brackets.
|
||||
|
||||
Configuration:
|
||||
--help display this help and exit
|
||||
--version display version information and exit
|
||||
|
||||
Installation directories:
|
||||
--prefix=PREFIX directories prefix [/usr]
|
||||
--psfdir=DIR PC screen fonts directory [PREFIX/share/consolefonts]
|
||||
--x11dir=DIR X11 fonts directory [PREFIX/X11R6/lib/X11/fonts/local]
|
2
dup/ascii-h.dup
Normal file
2
dup/ascii-h.dup
Normal file
@ -0,0 +1,2 @@
|
||||
0020 0000
|
||||
2302 007F
|
5
dup/cntrl.dup
Normal file
5
dup/cntrl.dup
Normal file
@ -0,0 +1,5 @@
|
||||
25B6 25BA
|
||||
25C0 25C4
|
||||
2666 25C6
|
||||
266B 266C
|
||||
FFFD 0000
|
7
dup/ibm-437.dup
Normal file
7
dup/ibm-437.dup
Normal file
@ -0,0 +1,7 @@
|
||||
00B5 03BC
|
||||
03A3 2211
|
||||
03A9 2126
|
||||
03B2 00DF
|
||||
220A 03B5
|
||||
220A 2208
|
||||
2205 03C6
|
1
dup/ka1.dup
Normal file
1
dup/ka1.dup
Normal file
@ -0,0 +1 @@
|
||||
0138 043A
|
1
dup/ka2.dup
Normal file
1
dup/ka2.dup
Normal file
@ -0,0 +1 @@
|
||||
006B 043A
|
1
dup/koi8.dup
Normal file
1
dup/koi8.dup
Normal file
@ -0,0 +1 @@
|
||||
043F 03C0
|
8
dup/vgagr.dup
Normal file
8
dup/vgagr.dup
Normal file
@ -0,0 +1,8 @@
|
||||
2191 25B2
|
||||
2193 25BC
|
||||
25B6 2192
|
||||
25B6 25BA
|
||||
25A0 FFFD
|
||||
25C0 2190
|
||||
25C0 25C4
|
||||
2666 25C6
|
107
dup/xos4-2.dup
Normal file
107
dup/xos4-2.dup
Normal file
@ -0,0 +1,107 @@
|
||||
0020 0000
|
||||
0020 00A0
|
||||
0020 2000
|
||||
0020 2001
|
||||
0020 2002
|
||||
0020 2003
|
||||
0020 2004
|
||||
0020 2005
|
||||
0020 2006
|
||||
0020 2007
|
||||
0020 2008
|
||||
0020 2009
|
||||
0020 200A
|
||||
0020 202F
|
||||
002D 2012
|
||||
002D 2013
|
||||
002D 2212
|
||||
0033 0417
|
||||
0041 0391
|
||||
0041 0410
|
||||
0042 0392
|
||||
0042 0412
|
||||
0043 0421
|
||||
0045 0395
|
||||
0045 0415
|
||||
0048 0397
|
||||
0048 041D
|
||||
0049 0399
|
||||
0049 0406
|
||||
0049 04C0
|
||||
004A 0408
|
||||
004B 039A
|
||||
004B 041A
|
||||
004D 039C
|
||||
004D 041C
|
||||
004E 039D
|
||||
004F 039F
|
||||
004F 041E
|
||||
0050 03A1
|
||||
0050 0420
|
||||
0053 0405
|
||||
0054 03A4
|
||||
0054 0422
|
||||
0058 03A7
|
||||
0058 0425
|
||||
0059 03A5
|
||||
0059 04AE
|
||||
005A 0396
|
||||
0061 0430
|
||||
0063 03F2
|
||||
0063 0441
|
||||
0065 0435
|
||||
0068 210E
|
||||
0069 0456
|
||||
006A 03F3
|
||||
006A 0458
|
||||
006C 04CF
|
||||
006F 03BF
|
||||
006F 043E
|
||||
0070 0440
|
||||
0073 0455
|
||||
0076 03BD
|
||||
0078 0445
|
||||
0079 0443
|
||||
00AD 2010
|
||||
00AD 2011
|
||||
00B4 0301
|
||||
00B5 03BC
|
||||
00C4 04D2
|
||||
00C6 04D4
|
||||
00C8 0400
|
||||
00CB 0401
|
||||
00CF 03AA
|
||||
00CF 0407
|
||||
00D0 0110
|
||||
00D6 04E6
|
||||
00E4 04D3
|
||||
00E6 04D5
|
||||
00E8 0450
|
||||
00EB 0451
|
||||
00EF 0457
|
||||
00F3 03CC
|
||||
00F6 04E7
|
||||
0102 04D0
|
||||
0103 04D1
|
||||
0138 03BA
|
||||
0178 03AB
|
||||
02C6 0302
|
||||
02C7 030C
|
||||
02D8 0306
|
||||
02DC 0303
|
||||
0393 0413
|
||||
03A9 2126
|
||||
03B5 2208
|
||||
03B5 220A
|
||||
03C0 043F
|
||||
03C6 2205
|
||||
041F 03A0
|
||||
045B 0127
|
||||
045B 210F
|
||||
04AF 03B3
|
||||
04D8 018F
|
||||
04D9 0259
|
||||
04E8 03F4
|
||||
2014 2015
|
||||
2206 0394
|
||||
0138 043A
|
25754
ter-u12b.bdf
Normal file
25754
ter-u12b.bdf
Normal file
File diff suppressed because it is too large
Load Diff
25754
ter-u12n.bdf
Normal file
25754
ter-u12n.bdf
Normal file
File diff suppressed because it is too large
Load Diff
28462
ter-u14b.bdf
Normal file
28462
ter-u14b.bdf
Normal file
File diff suppressed because it is too large
Load Diff
28462
ter-u14n.bdf
Normal file
28462
ter-u14n.bdf
Normal file
File diff suppressed because it is too large
Load Diff
28462
ter-u14v.bdf
Normal file
28462
ter-u14v.bdf
Normal file
File diff suppressed because it is too large
Load Diff
31170
ter-u16b.bdf
Normal file
31170
ter-u16b.bdf
Normal file
File diff suppressed because it is too large
Load Diff
31170
ter-u16n.bdf
Normal file
31170
ter-u16n.bdf
Normal file
File diff suppressed because it is too large
Load Diff
31170
ter-u16v.bdf
Normal file
31170
ter-u16v.bdf
Normal file
File diff suppressed because it is too large
Load Diff
33878
ter-u18b.bdf
Normal file
33878
ter-u18b.bdf
Normal file
File diff suppressed because it is too large
Load Diff
33878
ter-u18n.bdf
Normal file
33878
ter-u18n.bdf
Normal file
File diff suppressed because it is too large
Load Diff
36586
ter-u20b.bdf
Normal file
36586
ter-u20b.bdf
Normal file
File diff suppressed because it is too large
Load Diff
36586
ter-u20n.bdf
Normal file
36586
ter-u20n.bdf
Normal file
File diff suppressed because it is too large
Load Diff
39294
ter-u22b.bdf
Normal file
39294
ter-u22b.bdf
Normal file
File diff suppressed because it is too large
Load Diff
39294
ter-u22n.bdf
Normal file
39294
ter-u22n.bdf
Normal file
File diff suppressed because it is too large
Load Diff
42002
ter-u24b.bdf
Normal file
42002
ter-u24b.bdf
Normal file
File diff suppressed because it is too large
Load Diff
42002
ter-u24n.bdf
Normal file
42002
ter-u24n.bdf
Normal file
File diff suppressed because it is too large
Load Diff
47418
ter-u28b.bdf
Normal file
47418
ter-u28b.bdf
Normal file
File diff suppressed because it is too large
Load Diff
47418
ter-u28n.bdf
Normal file
47418
ter-u28n.bdf
Normal file
File diff suppressed because it is too large
Load Diff
52834
ter-u32b.bdf
Normal file
52834
ter-u32b.bdf
Normal file
File diff suppressed because it is too large
Load Diff
52834
ter-u32n.bdf
Normal file
52834
ter-u32n.bdf
Normal file
File diff suppressed because it is too large
Load Diff
1353
uni/10646-1.uni
Normal file
1353
uni/10646-1.uni
Normal file
File diff suppressed because it is too large
Load Diff
96
uni/8859-13.uni
Normal file
96
uni/8859-13.uni
Normal file
@ -0,0 +1,96 @@
|
||||
00A0
|
||||
201D
|
||||
00A2
|
||||
00A3
|
||||
00A4
|
||||
201E
|
||||
00A6
|
||||
00A7
|
||||
00D8
|
||||
00A9
|
||||
0156
|
||||
00AB
|
||||
00AC
|
||||
00AD
|
||||
00AE
|
||||
00C6
|
||||
00B0
|
||||
00B1
|
||||
00B2
|
||||
00B3
|
||||
201C
|
||||
00B5
|
||||
00B6
|
||||
00B7
|
||||
00F8
|
||||
00B9
|
||||
0157
|
||||
00BB
|
||||
00BC
|
||||
00BD
|
||||
00BE
|
||||
00E6
|
||||
0104
|
||||
012E
|
||||
0100
|
||||
0106
|
||||
00C4
|
||||
00C5
|
||||
0118
|
||||
0112
|
||||
010C
|
||||
00C9
|
||||
0179
|
||||
0116
|
||||
0122
|
||||
0136
|
||||
012A
|
||||
013B
|
||||
0160
|
||||
0143
|
||||
0145
|
||||
00D3
|
||||
014C
|
||||
00D5
|
||||
00D6
|
||||
00D7
|
||||
0172
|
||||
0141
|
||||
015A
|
||||
016A
|
||||
00DC
|
||||
017B
|
||||
017D
|
||||
00DF
|
||||
0105
|
||||
012F
|
||||
0101
|
||||
0107
|
||||
00E4
|
||||
00E5
|
||||
0119
|
||||
0113
|
||||
010D
|
||||
00E9
|
||||
017A
|
||||
0117
|
||||
0123
|
||||
0137
|
||||
012B
|
||||
013C
|
||||
0161
|
||||
0144
|
||||
0146
|
||||
00F3
|
||||
014D
|
||||
00F5
|
||||
00F6
|
||||
00F7
|
||||
0173
|
||||
0142
|
||||
015B
|
||||
016B
|
||||
00FC
|
||||
017C
|
||||
017E
|
||||
2019
|
96
uni/8859-15.uni
Normal file
96
uni/8859-15.uni
Normal file
@ -0,0 +1,96 @@
|
||||
00A0
|
||||
00A1
|
||||
00A2
|
||||
00A3
|
||||
20AC
|
||||
00A5
|
||||
0160
|
||||
00A7
|
||||
0161
|
||||
00A9
|
||||
00AA
|
||||
00AB
|
||||
00AC
|
||||
00AD
|
||||
00AE
|
||||
00AF
|
||||
00B0
|
||||
00B1
|
||||
00B2
|
||||
00B3
|
||||
017D
|
||||
00B5
|
||||
00B6
|
||||
00B7
|
||||
017E
|
||||
00B9
|
||||
00BA
|
||||
00BB
|
||||
0152
|
||||
0153
|
||||
0178
|
||||
00BF
|
||||
00C0
|
||||
00C1
|
||||
00C2
|
||||
00C3
|
||||
00C4
|
||||
00C5
|
||||
00C6
|
||||
00C7
|
||||
00C8
|
||||
00C9
|
||||
00CA
|
||||
00CB
|
||||
00CC
|
||||
00CD
|
||||
00CE
|
||||
00CF
|
||||
00D0
|
||||
00D1
|
||||
00D2
|
||||
00D3
|
||||
00D4
|
||||
00D5
|
||||
00D6
|
||||
00D7
|
||||
00D8
|
||||
00D9
|
||||
00DA
|
||||
00DB
|
||||
00DC
|
||||
00DD
|
||||
00DE
|
||||
00DF
|
||||
00E0
|
||||
00E1
|
||||
00E2
|
||||
00E3
|
||||
00E4
|
||||
00E5
|
||||
00E6
|
||||
00E7
|
||||
00E8
|
||||
00E9
|
||||
00EA
|
||||
00EB
|
||||
00EC
|
||||
00ED
|
||||
00EE
|
||||
00EF
|
||||
00F0
|
||||
00F1
|
||||
00F2
|
||||
00F3
|
||||
00F4
|
||||
00F5
|
||||
00F6
|
||||
00F7
|
||||
00F8
|
||||
00F9
|
||||
00FA
|
||||
00FB
|
||||
00FC
|
||||
00FD
|
||||
00FE
|
||||
00FF
|
96
uni/8859-16.uni
Normal file
96
uni/8859-16.uni
Normal file
@ -0,0 +1,96 @@
|
||||
00A0
|
||||
0104
|
||||
0105
|
||||
0141
|
||||
20AC
|
||||
201E
|
||||
0160
|
||||
00A7
|
||||
0161
|
||||
00A9
|
||||
0218
|
||||
00AB
|
||||
0179
|
||||
00AD
|
||||
017A
|
||||
017B
|
||||
00B0
|
||||
00B1
|
||||
010C
|
||||
0142
|
||||
017D
|
||||
201D
|
||||
00B6
|
||||
00B7
|
||||
017E
|
||||
010D
|
||||
0219
|
||||
00BB
|
||||
0152
|
||||
0153
|
||||
0178
|
||||
017C
|
||||
00C0
|
||||
00C1
|
||||
00C2
|
||||
0102
|
||||
00C4
|
||||
0106
|
||||
00C6
|
||||
00C7
|
||||
00C8
|
||||
00C9
|
||||
00CA
|
||||
00CB
|
||||
00CC
|
||||
00CD
|
||||
00CE
|
||||
00CF
|
||||
0110
|
||||
0143
|
||||
00D2
|
||||
00D3
|
||||
00D4
|
||||
0150
|
||||
00D6
|
||||
015A
|
||||
0170
|
||||
00D9
|
||||
00DA
|
||||
00DB
|
||||
00DC
|
||||
0118
|
||||
021A
|
||||
00DF
|
||||
00E0
|
||||
00E1
|
||||
00E2
|
||||
0103
|
||||
00E4
|
||||
0107
|
||||
00E6
|
||||
00E7
|
||||
00E8
|
||||
00E9
|
||||
00EA
|
||||
00EB
|
||||
00EC
|
||||
00ED
|
||||
00EE
|
||||
00EF
|
||||
0111
|
||||
0144
|
||||
00F2
|
||||
00F3
|
||||
00F4
|
||||
0151
|
||||
00F6
|
||||
015B
|
||||
0171
|
||||
00F9
|
||||
00FA
|
||||
00FB
|
||||
00FC
|
||||
0119
|
||||
021B
|
||||
00FF
|
96
uni/8859-2.uni
Normal file
96
uni/8859-2.uni
Normal file
@ -0,0 +1,96 @@
|
||||
00A0
|
||||
0104
|
||||
02D8
|
||||
0141
|
||||
00A4
|
||||
013D
|
||||
015A
|
||||
00A7
|
||||
00A8
|
||||
0160
|
||||
015E
|
||||
0164
|
||||
0179
|
||||
00AD
|
||||
017D
|
||||
017B
|
||||
00B0
|
||||
0105
|
||||
02DB
|
||||
0142
|
||||
00B4
|
||||
013E
|
||||
015B
|
||||
02C7
|
||||
00B8
|
||||
0161
|
||||
015F
|
||||
0165
|
||||
017A
|
||||
02DD
|
||||
017E
|
||||
017C
|
||||
0154
|
||||
00C1
|
||||
00C2
|
||||
0102
|
||||
00C4
|
||||
0139
|
||||
0106
|
||||
00C7
|
||||
010C
|
||||
00C9
|
||||
0118
|
||||
00CB
|
||||
011A
|
||||
00CD
|
||||
00CE
|
||||
010E
|
||||
0110
|
||||
0143
|
||||
0147
|
||||
00D3
|
||||
00D4
|
||||
0150
|
||||
00D6
|
||||
00D7
|
||||
0158
|
||||
016E
|
||||
00DA
|
||||
0170
|
||||
00DC
|
||||
00DD
|
||||
0162
|
||||
00DF
|
||||
0155
|
||||
00E1
|
||||
00E2
|
||||
0103
|
||||
00E4
|
||||
013A
|
||||
0107
|
||||
00E7
|
||||
010D
|
||||
00E9
|
||||
0119
|
||||
00EB
|
||||
011B
|
||||
00ED
|
||||
00EE
|
||||
010F
|
||||
0111
|
||||
0144
|
||||
0148
|
||||
00F3
|
||||
00F4
|
||||
0151
|
||||
00F6
|
||||
00F7
|
||||
0159
|
||||
016F
|
||||
00FA
|
||||
0171
|
||||
00FC
|
||||
00FD
|
||||
0163
|
||||
02D9
|
96
uni/8859-5.uni
Normal file
96
uni/8859-5.uni
Normal file
@ -0,0 +1,96 @@
|
||||
00A0
|
||||
0401
|
||||
0402
|
||||
0403
|
||||
0404
|
||||
0405
|
||||
0406
|
||||
0407
|
||||
0408
|
||||
0409
|
||||
040A
|
||||
040B
|
||||
040C
|
||||
00AD
|
||||
040E
|
||||
040F
|
||||
0410
|
||||
0411
|
||||
0412
|
||||
0413
|
||||
0414
|
||||
0415
|
||||
0416
|
||||
0417
|
||||
0418
|
||||
0419
|
||||
041A
|
||||
041B
|
||||
041C
|
||||
041D
|
||||
041E
|
||||
041F
|
||||
0420
|
||||
0421
|
||||
0422
|
||||
0423
|
||||
0424
|
||||
0425
|
||||
0426
|
||||
0427
|
||||
0428
|
||||
0429
|
||||
042A
|
||||
042B
|
||||
042C
|
||||
042D
|
||||
042E
|
||||
042F
|
||||
0430
|
||||
0431
|
||||
0432
|
||||
0433
|
||||
0434
|
||||
0435
|
||||
0436
|
||||
0437
|
||||
0438
|
||||
0439
|
||||
043A
|
||||
043B
|
||||
043C
|
||||
043D
|
||||
043E
|
||||
043F
|
||||
0440
|
||||
0441
|
||||
0442
|
||||
0443
|
||||
0444
|
||||
0445
|
||||
0446
|
||||
0447
|
||||
0448
|
||||
0449
|
||||
044A
|
||||
044B
|
||||
044C
|
||||
044D
|
||||
044E
|
||||
044F
|
||||
2116
|
||||
0451
|
||||
0452
|
||||
0453
|
||||
0454
|
||||
0455
|
||||
0456
|
||||
0457
|
||||
0458
|
||||
0459
|
||||
045A
|
||||
045B
|
||||
045C
|
||||
00A7
|
||||
045E
|
||||
045F
|
96
uni/8859-7.uni
Normal file
96
uni/8859-7.uni
Normal file
@ -0,0 +1,96 @@
|
||||
00A0
|
||||
02BD
|
||||
02BC
|
||||
00A3
|
||||
20AC
|
||||
FFFF
|
||||
00A6
|
||||
00A7
|
||||
00A8
|
||||
00A9
|
||||
FFFF
|
||||
00AB
|
||||
00AC
|
||||
00AD
|
||||
FFFF
|
||||
2015
|
||||
00B0
|
||||
00B1
|
||||
00B2
|
||||
00B3
|
||||
0384
|
||||
0385
|
||||
0386
|
||||
00B7
|
||||
0388
|
||||
0389
|
||||
038A
|
||||
00BB
|
||||
038C
|
||||
00BD
|
||||
038E
|
||||
038F
|
||||
0390
|
||||
0391
|
||||
0392
|
||||
0393
|
||||
0394
|
||||
0395
|
||||
0396
|
||||
0397
|
||||
0398
|
||||
0399
|
||||
039A
|
||||
039B
|
||||
039C
|
||||
039D
|
||||
039E
|
||||
039F
|
||||
03A0
|
||||
03A1
|
||||
FFFF
|
||||
03A3
|
||||
03A4
|
||||
03A5
|
||||
03A6
|
||||
03A7
|
||||
03A8
|
||||
03A9
|
||||
03AA
|
||||
03AB
|
||||
03AC
|
||||
03AD
|
||||
03AE
|
||||
03AF
|
||||
03B0
|
||||
03B1
|
||||
03B2
|
||||
03B3
|
||||
03B4
|
||||
03B5
|
||||
03B6
|
||||
03B7
|
||||
03B8
|
||||
03B9
|
||||
03BA
|
||||
03BB
|
||||
03BC
|
||||
03BD
|
||||
03BE
|
||||
03BF
|
||||
03C0
|
||||
03C1
|
||||
03C2
|
||||
03C3
|
||||
03C4
|
||||
03C5
|
||||
03C6
|
||||
03C7
|
||||
03C8
|
||||
03C9
|
||||
03CA
|
||||
03CB
|
||||
03CC
|
||||
03CD
|
||||
03CE
|
||||
FFFF
|
96
uni/ascii-h.uni
Normal file
96
uni/ascii-h.uni
Normal file
@ -0,0 +1,96 @@
|
||||
0020
|
||||
0021
|
||||
0022
|
||||
0023
|
||||
0024
|
||||
0025
|
||||
0026
|
||||
0027
|
||||
0028
|
||||
0029
|
||||
002A
|
||||
002B
|
||||
002C
|
||||
002D
|
||||
002E
|
||||
002F
|
||||
0030
|
||||
0031
|
||||
0032
|
||||
0033
|
||||
0034
|
||||
0035
|
||||
0036
|
||||
0037
|
||||
0038
|
||||
0039
|
||||
003A
|
||||
003B
|
||||
003C
|
||||
003D
|
||||
003E
|
||||
003F
|
||||
0040
|
||||
0041
|
||||
0042
|
||||
0043
|
||||
0044
|
||||
0045
|
||||
0046
|
||||
0047
|
||||
0048
|
||||
0049
|
||||
004A
|
||||
004B
|
||||
004C
|
||||
004D
|
||||
004E
|
||||
004F
|
||||
0050
|
||||
0051
|
||||
0052
|
||||
0053
|
||||
0054
|
||||
0055
|
||||
0056
|
||||
0057
|
||||
0058
|
||||
0059
|
||||
005A
|
||||
005B
|
||||
005C
|
||||
005D
|
||||
005E
|
||||
005F
|
||||
0060
|
||||
0061
|
||||
0062
|
||||
0063
|
||||
0064
|
||||
0065
|
||||
0066
|
||||
0067
|
||||
0068
|
||||
0069
|
||||
006A
|
||||
006B
|
||||
006C
|
||||
006D
|
||||
006E
|
||||
006F
|
||||
0070
|
||||
0071
|
||||
0072
|
||||
0073
|
||||
0074
|
||||
0075
|
||||
0076
|
||||
0077
|
||||
0078
|
||||
0079
|
||||
007A
|
||||
007B
|
||||
007C
|
||||
007D
|
||||
007E
|
||||
2302
|
128
uni/bg-mik.uni
Normal file
128
uni/bg-mik.uni
Normal file
@ -0,0 +1,128 @@
|
||||
0410
|
||||
0411
|
||||
0412
|
||||
0413
|
||||
0414
|
||||
0415
|
||||
0416
|
||||
0417
|
||||
0418
|
||||
0419
|
||||
041A
|
||||
041B
|
||||
041C
|
||||
041D
|
||||
041E
|
||||
041F
|
||||
0420
|
||||
0421
|
||||
0422
|
||||
0423
|
||||
0424
|
||||
0425
|
||||
0426
|
||||
0427
|
||||
0428
|
||||
0429
|
||||
042A
|
||||
042B
|
||||
042C
|
||||
042D
|
||||
042E
|
||||
042F
|
||||
0430
|
||||
0431
|
||||
0432
|
||||
0433
|
||||
0434
|
||||
0435
|
||||
0436
|
||||
0437
|
||||
0438
|
||||
0439
|
||||
043A
|
||||
043B
|
||||
043C
|
||||
043D
|
||||
043E
|
||||
043F
|
||||
0440
|
||||
0441
|
||||
0442
|
||||
0443
|
||||
0444
|
||||
0445
|
||||
0446
|
||||
0447
|
||||
0448
|
||||
0449
|
||||
044A
|
||||
044B
|
||||
044C
|
||||
044D
|
||||
044E
|
||||
044F
|
||||
2514
|
||||
2534
|
||||
252C
|
||||
251C
|
||||
2500
|
||||
253C
|
||||
2563
|
||||
2551
|
||||
255A
|
||||
2554
|
||||
2569
|
||||
2566
|
||||
2560
|
||||
2550
|
||||
256C
|
||||
2510
|
||||
2591
|
||||
2592
|
||||
2593
|
||||
2502
|
||||
2524
|
||||
2116
|
||||
00A7
|
||||
2557
|
||||
255D
|
||||
2518
|
||||
250C
|
||||
2588
|
||||
2584
|
||||
258C
|
||||
2590
|
||||
2580
|
||||
03B1
|
||||
03B2
|
||||
0393
|
||||
03C0
|
||||
03A3
|
||||
03C3
|
||||
00B5
|
||||
03C4
|
||||
03A6
|
||||
0398
|
||||
03A9
|
||||
03B4
|
||||
221E
|
||||
2205
|
||||
220A
|
||||
2229
|
||||
2261
|
||||
00B1
|
||||
2265
|
||||
2264
|
||||
2320
|
||||
2321
|
||||
00F7
|
||||
2248
|
||||
00B0
|
||||
2219
|
||||
00B7
|
||||
221A
|
||||
207F
|
||||
00B2
|
||||
25A0
|
||||
00A0
|
32
uni/char0.uni
Normal file
32
uni/char0.uni
Normal file
@ -0,0 +1,32 @@
|
||||
0000
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
32
uni/cntrl.uni
Normal file
32
uni/cntrl.uni
Normal file
@ -0,0 +1,32 @@
|
||||
FFFD
|
||||
263A
|
||||
263B
|
||||
2665
|
||||
2666
|
||||
2663
|
||||
2660
|
||||
2022
|
||||
25D8
|
||||
25CB
|
||||
25D9
|
||||
2642
|
||||
2640
|
||||
266A
|
||||
266B
|
||||
263C
|
||||
25B6
|
||||
25C0
|
||||
2195
|
||||
203C
|
||||
00B6
|
||||
00A7
|
||||
25AC
|
||||
21A8
|
||||
2191
|
||||
2193
|
||||
2192
|
||||
2190
|
||||
221F
|
||||
2194
|
||||
25B2
|
||||
25BC
|
32
uni/empty.uni
Normal file
32
uni/empty.uni
Normal file
@ -0,0 +1,32 @@
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
128
uni/ibm-437.uni
Normal file
128
uni/ibm-437.uni
Normal file
@ -0,0 +1,128 @@
|
||||
00C7
|
||||
00FC
|
||||
00E9
|
||||
00E2
|
||||
00E4
|
||||
00E0
|
||||
00E5
|
||||
00E7
|
||||
00EA
|
||||
00EB
|
||||
00E8
|
||||
00EF
|
||||
00EE
|
||||
00EC
|
||||
00C4
|
||||
00C5
|
||||
00C9
|
||||
00E6
|
||||
00C6
|
||||
00F4
|
||||
00F6
|
||||
00F2
|
||||
00FB
|
||||
00F9
|
||||
00FF
|
||||
00D6
|
||||
00DC
|
||||
00A2
|
||||
00A3
|
||||
00A5
|
||||
20A7
|
||||
0192
|
||||
00E1
|
||||
00ED
|
||||
00F3
|
||||
00FA
|
||||
00F1
|
||||
00D1
|
||||
00AA
|
||||
00BA
|
||||
00BF
|
||||
2310
|
||||
00AC
|
||||
00BD
|
||||
00BC
|
||||
00A1
|
||||
00AB
|
||||
00BB
|
||||
2591
|
||||
2592
|
||||
2593
|
||||
2502
|
||||
2524
|
||||
2561
|
||||
2562
|
||||
2556
|
||||
2555
|
||||
2563
|
||||
2551
|
||||
2557
|
||||
255D
|
||||
255C
|
||||
255B
|
||||
2510
|
||||
2514
|
||||
2534
|
||||
252C
|
||||
251C
|
||||
2500
|
||||
253C
|
||||
255E
|
||||
255F
|
||||
255A
|
||||
2554
|
||||
2569
|
||||
2566
|
||||
2560
|
||||
2550
|
||||
256C
|
||||
2567
|
||||
2568
|
||||
2564
|
||||
2565
|
||||
2559
|
||||
2558
|
||||
2552
|
||||
2553
|
||||
256B
|
||||
256A
|
||||
2518
|
||||
250C
|
||||
2588
|
||||
2584
|
||||
258C
|
||||
2590
|
||||
2580
|
||||
03B1
|
||||
03B2
|
||||
0393
|
||||
03C0
|
||||
03A3
|
||||
03C3
|
||||
00B5
|
||||
03C4
|
||||
03A6
|
||||
0398
|
||||
03A9
|
||||
03B4
|
||||
221E
|
||||
2205
|
||||
220A
|
||||
2229
|
||||
2261
|
||||
00B1
|
||||
2265
|
||||
2264
|
||||
2320
|
||||
2321
|
||||
00F7
|
||||
2248
|
||||
00B0
|
||||
2219
|
||||
00B7
|
||||
221A
|
||||
207F
|
||||
00B2
|
||||
25A0
|
||||
00A0
|
128
uni/koi8-r.uni
Normal file
128
uni/koi8-r.uni
Normal file
@ -0,0 +1,128 @@
|
||||
2500
|
||||
2502
|
||||
250C
|
||||
2510
|
||||
2514
|
||||
2518
|
||||
251C
|
||||
2524
|
||||
252C
|
||||
2534
|
||||
253C
|
||||
2580
|
||||
2584
|
||||
2588
|
||||
258C
|
||||
2590
|
||||
2591
|
||||
2592
|
||||
2593
|
||||
2320
|
||||
25A0
|
||||
2022
|
||||
221A
|
||||
2248
|
||||
2264
|
||||
2265
|
||||
00A0
|
||||
2321
|
||||
00B0
|
||||
00B2
|
||||
00B7
|
||||
00F7
|
||||
2550
|
||||
2551
|
||||
2552
|
||||
0451
|
||||
2553
|
||||
2554
|
||||
2555
|
||||
2556
|
||||
2557
|
||||
2558
|
||||
2559
|
||||
255A
|
||||
255B
|
||||
255C
|
||||
255D
|
||||
255E
|
||||
255F
|
||||
2560
|
||||
2561
|
||||
0401
|
||||
2562
|
||||
2563
|
||||
2564
|
||||
2565
|
||||
2566
|
||||
2567
|
||||
2568
|
||||
2569
|
||||
256A
|
||||
256B
|
||||
256C
|
||||
00A9
|
||||
044E
|
||||
0430
|
||||
0431
|
||||
0446
|
||||
0434
|
||||
0435
|
||||
0444
|
||||
0433
|
||||
0445
|
||||
0438
|
||||
0439
|
||||
043A
|
||||
043B
|
||||
043C
|
||||
043D
|
||||
043E
|
||||
043F
|
||||
044F
|
||||
0440
|
||||
0441
|
||||
0442
|
||||
0443
|
||||
0436
|
||||
0432
|
||||
044C
|
||||
044B
|
||||
0437
|
||||
0448
|
||||
044D
|
||||
0449
|
||||
0447
|
||||
044A
|
||||
042E
|
||||
0410
|
||||
0411
|
||||
0426
|
||||
0414
|
||||
0415
|
||||
0424
|
||||
0413
|
||||
0425
|
||||
0418
|
||||
0419
|
||||
041A
|
||||
041B
|
||||
041C
|
||||
041D
|
||||
041E
|
||||
041F
|
||||
042F
|
||||
0420
|
||||
0421
|
||||
0422
|
||||
0423
|
||||
0416
|
||||
0412
|
||||
042C
|
||||
042B
|
||||
0417
|
||||
0428
|
||||
042D
|
||||
0429
|
||||
0427
|
||||
042A
|
128
uni/koi8-u.uni
Normal file
128
uni/koi8-u.uni
Normal file
@ -0,0 +1,128 @@
|
||||
2500
|
||||
2502
|
||||
250C
|
||||
2510
|
||||
2514
|
||||
2518
|
||||
251C
|
||||
2524
|
||||
252C
|
||||
2534
|
||||
253C
|
||||
2580
|
||||
2584
|
||||
2588
|
||||
258C
|
||||
2590
|
||||
2591
|
||||
2592
|
||||
2593
|
||||
2320
|
||||
25A0
|
||||
2022
|
||||
221A
|
||||
2248
|
||||
2264
|
||||
2265
|
||||
00A0
|
||||
2321
|
||||
00B0
|
||||
00B2
|
||||
00B7
|
||||
00F7
|
||||
2550
|
||||
2551
|
||||
2552
|
||||
0451
|
||||
0454
|
||||
2554
|
||||
0456
|
||||
0457
|
||||
2557
|
||||
2558
|
||||
2559
|
||||
255A
|
||||
255B
|
||||
0491
|
||||
255D
|
||||
255E
|
||||
255F
|
||||
2560
|
||||
2561
|
||||
0401
|
||||
0404
|
||||
2563
|
||||
0406
|
||||
0407
|
||||
2566
|
||||
2567
|
||||
2568
|
||||
2569
|
||||
256A
|
||||
0490
|
||||
256C
|
||||
00A9
|
||||
044E
|
||||
0430
|
||||
0431
|
||||
0446
|
||||
0434
|
||||
0435
|
||||
0444
|
||||
0433
|
||||
0445
|
||||
0438
|
||||
0439
|
||||
043A
|
||||
043B
|
||||
043C
|
||||
043D
|
||||
043E
|
||||
043F
|
||||
044F
|
||||
0440
|
||||
0441
|
||||
0442
|
||||
0443
|
||||
0436
|
||||
0432
|
||||
044C
|
||||
044B
|
||||
0437
|
||||
0448
|
||||
044D
|
||||
0449
|
||||
0447
|
||||
044A
|
||||
042E
|
||||
0410
|
||||
0411
|
||||
0426
|
||||
0414
|
||||
0415
|
||||
0424
|
||||
0413
|
||||
0425
|
||||
0418
|
||||
0419
|
||||
041A
|
||||
041B
|
||||
041C
|
||||
041D
|
||||
041E
|
||||
041F
|
||||
042F
|
||||
0420
|
||||
0421
|
||||
0422
|
||||
0423
|
||||
0416
|
||||
0412
|
||||
042C
|
||||
042B
|
||||
0417
|
||||
0428
|
||||
042D
|
||||
0429
|
||||
0427
|
||||
042A
|
128
uni/koibm8-r.uni
Normal file
128
uni/koibm8-r.uni
Normal file
@ -0,0 +1,128 @@
|
||||
2502
|
||||
2510
|
||||
2524
|
||||
2591
|
||||
2592
|
||||
2593
|
||||
2320
|
||||
25A0
|
||||
2022
|
||||
221A
|
||||
2248
|
||||
2264
|
||||
2265
|
||||
00A0
|
||||
2321
|
||||
00B0
|
||||
00B2
|
||||
00B7
|
||||
00F7
|
||||
2551
|
||||
0451
|
||||
2555
|
||||
2556
|
||||
2557
|
||||
255B
|
||||
255C
|
||||
255D
|
||||
2561
|
||||
0401
|
||||
2562
|
||||
2563
|
||||
00A9
|
||||
044E
|
||||
0430
|
||||
0431
|
||||
0446
|
||||
0434
|
||||
0435
|
||||
0444
|
||||
0433
|
||||
0445
|
||||
0438
|
||||
0439
|
||||
043A
|
||||
043B
|
||||
043C
|
||||
043D
|
||||
043E
|
||||
043F
|
||||
044F
|
||||
0440
|
||||
0441
|
||||
0442
|
||||
0443
|
||||
0436
|
||||
0432
|
||||
044C
|
||||
044B
|
||||
0437
|
||||
0448
|
||||
044D
|
||||
0449
|
||||
0447
|
||||
044A
|
||||
2514
|
||||
2534
|
||||
252C
|
||||
251C
|
||||
2500
|
||||
253C
|
||||
255E
|
||||
255F
|
||||
255A
|
||||
2554
|
||||
2569
|
||||
2566
|
||||
2560
|
||||
2550
|
||||
256C
|
||||
2567
|
||||
2568
|
||||
2564
|
||||
2565
|
||||
2559
|
||||
2558
|
||||
2552
|
||||
2553
|
||||
256B
|
||||
256A
|
||||
2518
|
||||
250C
|
||||
2588
|
||||
2584
|
||||
258C
|
||||
2590
|
||||
2580
|
||||
042E
|
||||
0410
|
||||
0411
|
||||
0426
|
||||
0414
|
||||
0415
|
||||
0424
|
||||
0413
|
||||
0425
|
||||
0418
|
||||
0419
|
||||
041A
|
||||
041B
|
||||
041C
|
||||
041D
|
||||
041E
|
||||
041F
|
||||
042F
|
||||
0420
|
||||
0421
|
||||
0422
|
||||
0423
|
||||
0416
|
||||
0412
|
||||
042C
|
||||
042B
|
||||
0417
|
||||
0428
|
||||
042D
|
||||
0429
|
||||
0427
|
||||
042A
|
128
uni/koibm8-u.uni
Normal file
128
uni/koibm8-u.uni
Normal file
@ -0,0 +1,128 @@
|
||||
2502
|
||||
2510
|
||||
2524
|
||||
2591
|
||||
2592
|
||||
2593
|
||||
2320
|
||||
25A0
|
||||
2022
|
||||
221A
|
||||
2248
|
||||
2264
|
||||
2265
|
||||
00A0
|
||||
2321
|
||||
00B0
|
||||
00B2
|
||||
00B7
|
||||
00F7
|
||||
2551
|
||||
0451
|
||||
0456
|
||||
0457
|
||||
2557
|
||||
255B
|
||||
0491
|
||||
255D
|
||||
2561
|
||||
0401
|
||||
0404
|
||||
2563
|
||||
00A9
|
||||
044E
|
||||
0430
|
||||
0431
|
||||
0446
|
||||
0434
|
||||
0435
|
||||
0444
|
||||
0433
|
||||
0445
|
||||
0438
|
||||
0439
|
||||
043A
|
||||
043B
|
||||
043C
|
||||
043D
|
||||
043E
|
||||
043F
|
||||
044F
|
||||
0440
|
||||
0441
|
||||
0442
|
||||
0443
|
||||
0436
|
||||
0432
|
||||
044C
|
||||
044B
|
||||
0437
|
||||
0448
|
||||
044D
|
||||
0449
|
||||
0447
|
||||
044A
|
||||
2514
|
||||
2534
|
||||
252C
|
||||
251C
|
||||
2500
|
||||
253C
|
||||
255E
|
||||
255F
|
||||
255A
|
||||
2554
|
||||
2569
|
||||
2566
|
||||
2560
|
||||
2550
|
||||
256C
|
||||
2567
|
||||
2568
|
||||
0406
|
||||
0407
|
||||
2559
|
||||
2558
|
||||
2552
|
||||
0454
|
||||
0490
|
||||
256A
|
||||
2518
|
||||
250C
|
||||
2588
|
||||
2584
|
||||
258C
|
||||
2590
|
||||
2580
|
||||
042E
|
||||
0410
|
||||
0411
|
||||
0426
|
||||
0414
|
||||
0415
|
||||
0424
|
||||
0413
|
||||
0425
|
||||
0418
|
||||
0419
|
||||
041A
|
||||
041B
|
||||
041C
|
||||
041D
|
||||
041E
|
||||
041F
|
||||
042F
|
||||
0420
|
||||
0421
|
||||
0422
|
||||
0423
|
||||
0416
|
||||
0412
|
||||
042C
|
||||
042B
|
||||
0417
|
||||
0428
|
||||
042D
|
||||
0429
|
||||
0427
|
||||
042A
|
32
uni/nls-1250.uni
Normal file
32
uni/nls-1250.uni
Normal file
@ -0,0 +1,32 @@
|
||||
0164
|
||||
0165
|
||||
02C7
|
||||
02D8
|
||||
00A8
|
||||
015E
|
||||
02DB
|
||||
00B4
|
||||
00B8
|
||||
015F
|
||||
013D
|
||||
02DD
|
||||
013E
|
||||
0154
|
||||
0139
|
||||
011A
|
||||
010E
|
||||
0147
|
||||
0158
|
||||
016E
|
||||
00DD
|
||||
0162
|
||||
0155
|
||||
013A
|
||||
011B
|
||||
010F
|
||||
0148
|
||||
0159
|
||||
016F
|
||||
00FD
|
||||
0163
|
||||
02D9
|
128
uni/pt-154.uni
Normal file
128
uni/pt-154.uni
Normal file
@ -0,0 +1,128 @@
|
||||
0496
|
||||
0492
|
||||
04EE
|
||||
0493
|
||||
201E
|
||||
2026
|
||||
04B6
|
||||
04AE
|
||||
04B2
|
||||
04AF
|
||||
04A0
|
||||
04E2
|
||||
04A2
|
||||
049A
|
||||
04BA
|
||||
04B8
|
||||
0497
|
||||
2018
|
||||
2019
|
||||
201C
|
||||
201D
|
||||
2022
|
||||
2013
|
||||
2014
|
||||
04B3
|
||||
04B7
|
||||
04A1
|
||||
04E3
|
||||
04A3
|
||||
049B
|
||||
04BB
|
||||
04B9
|
||||
00A0
|
||||
040E
|
||||
045E
|
||||
0408
|
||||
04E8
|
||||
0498
|
||||
04B0
|
||||
00A7
|
||||
0401
|
||||
00A9
|
||||
04D8
|
||||
00AB
|
||||
00AC
|
||||
04EF
|
||||
00AE
|
||||
049C
|
||||
00B0
|
||||
04B1
|
||||
0406
|
||||
0456
|
||||
0499
|
||||
04E9
|
||||
00B6
|
||||
00B7
|
||||
0451
|
||||
2116
|
||||
04D9
|
||||
00BB
|
||||
0458
|
||||
04AA
|
||||
04AB
|
||||
049D
|
||||
0410
|
||||
0411
|
||||
0412
|
||||
0413
|
||||
0414
|
||||
0415
|
||||
0416
|
||||
0417
|
||||
0418
|
||||
0419
|
||||
041A
|
||||
041B
|
||||
041C
|
||||
041D
|
||||
041E
|
||||
041F
|
||||
0420
|
||||
0421
|
||||
0422
|
||||
0423
|
||||
0424
|
||||
0425
|
||||
0426
|
||||
0427
|
||||
0428
|
||||
0429
|
||||
042A
|
||||
042B
|
||||
042C
|
||||
042D
|
||||
042E
|
||||
042F
|
||||
0430
|
||||
0431
|
||||
0432
|
||||
0433
|
||||
0434
|
||||
0435
|
||||
0436
|
||||
0437
|
||||
0438
|
||||
0439
|
||||
043A
|
||||
043B
|
||||
043C
|
||||
043D
|
||||
043E
|
||||
043F
|
||||
0440
|
||||
0441
|
||||
0442
|
||||
0443
|
||||
0444
|
||||
0445
|
||||
0446
|
||||
0447
|
||||
0448
|
||||
0449
|
||||
044A
|
||||
044B
|
||||
044C
|
||||
044D
|
||||
044E
|
||||
044F
|
128
uni/pt-254.uni
Normal file
128
uni/pt-254.uni
Normal file
@ -0,0 +1,128 @@
|
||||
0410
|
||||
0411
|
||||
0412
|
||||
0413
|
||||
0414
|
||||
0415
|
||||
0416
|
||||
0417
|
||||
0418
|
||||
0419
|
||||
041A
|
||||
041B
|
||||
041C
|
||||
041D
|
||||
041E
|
||||
041F
|
||||
0420
|
||||
0421
|
||||
0422
|
||||
0423
|
||||
0424
|
||||
0425
|
||||
0426
|
||||
0427
|
||||
0428
|
||||
0429
|
||||
042A
|
||||
042B
|
||||
042C
|
||||
042D
|
||||
042E
|
||||
042F
|
||||
04B6
|
||||
00B0
|
||||
0498
|
||||
00A3
|
||||
00A7
|
||||
2022
|
||||
00B6
|
||||
0406
|
||||
00AE
|
||||
00A9
|
||||
04B7
|
||||
0496
|
||||
0497
|
||||
04AE
|
||||
0492
|
||||
0493
|
||||
04B0
|
||||
04B1
|
||||
04E2
|
||||
04E3
|
||||
0456
|
||||
04E9
|
||||
0499
|
||||
0408
|
||||
04D8
|
||||
04D9
|
||||
049C
|
||||
049D
|
||||
04A0
|
||||
04A1
|
||||
04A2
|
||||
04A3
|
||||
0458
|
||||
04AA
|
||||
00AC
|
||||
04B2
|
||||
04EE
|
||||
04B3
|
||||
04AF
|
||||
00AB
|
||||
00BB
|
||||
2026
|
||||
00A0
|
||||
04BA
|
||||
04BB
|
||||
049A
|
||||
049B
|
||||
04AB
|
||||
2013
|
||||
2014
|
||||
201C
|
||||
201D
|
||||
2018
|
||||
2019
|
||||
04EF
|
||||
201E
|
||||
040E
|
||||
045E
|
||||
04B8
|
||||
04B9
|
||||
2116
|
||||
0401
|
||||
0451
|
||||
044F
|
||||
0430
|
||||
0431
|
||||
0432
|
||||
0433
|
||||
0434
|
||||
0435
|
||||
0436
|
||||
0437
|
||||
0438
|
||||
0439
|
||||
043A
|
||||
043B
|
||||
043C
|
||||
043D
|
||||
043E
|
||||
043F
|
||||
0440
|
||||
0441
|
||||
0442
|
||||
0443
|
||||
0444
|
||||
0445
|
||||
0446
|
||||
0447
|
||||
0448
|
||||
0449
|
||||
044A
|
||||
044B
|
||||
044C
|
||||
044D
|
||||
044E
|
||||
04E8
|
32
uni/vga-1250.uni
Normal file
32
uni/vga-1250.uni
Normal file
@ -0,0 +1,32 @@
|
||||
20AC
|
||||
FFFF
|
||||
201A
|
||||
FFFF
|
||||
201E
|
||||
2026
|
||||
2020
|
||||
2021
|
||||
FFFF
|
||||
2030
|
||||
2039
|
||||
FFFF
|
||||
2018
|
||||
2019
|
||||
201C
|
||||
201D
|
||||
2022
|
||||
2013
|
||||
2014
|
||||
FFFF
|
||||
2122
|
||||
203A
|
||||
00A6
|
||||
00A9
|
||||
00AB
|
||||
00AC
|
||||
00AE
|
||||
00B1
|
||||
00B5
|
||||
00B6
|
||||
00B7
|
||||
00BB
|
32
uni/vga-1251.uni
Normal file
32
uni/vga-1251.uni
Normal file
@ -0,0 +1,32 @@
|
||||
0402
|
||||
0403
|
||||
201A
|
||||
0453
|
||||
201E
|
||||
2026
|
||||
2020
|
||||
2021
|
||||
20AC
|
||||
2030
|
||||
0409
|
||||
2039
|
||||
040A
|
||||
040C
|
||||
040B
|
||||
040F
|
||||
0452
|
||||
2018
|
||||
2019
|
||||
201C
|
||||
201D
|
||||
2022
|
||||
2013
|
||||
2014
|
||||
045D
|
||||
2122
|
||||
0459
|
||||
203A
|
||||
045A
|
||||
045C
|
||||
045B
|
||||
045F
|
32
uni/vga-1253.uni
Normal file
32
uni/vga-1253.uni
Normal file
@ -0,0 +1,32 @@
|
||||
20AC
|
||||
FFFF
|
||||
201A
|
||||
0192
|
||||
201E
|
||||
2026
|
||||
2020
|
||||
2021
|
||||
FFFF
|
||||
2030
|
||||
FFFF
|
||||
2039
|
||||
00A4
|
||||
00A5
|
||||
00AE
|
||||
00B5
|
||||
00B6
|
||||
2018
|
||||
2019
|
||||
201C
|
||||
201D
|
||||
2022
|
||||
2013
|
||||
2014
|
||||
FFFF
|
||||
2122
|
||||
FFFF
|
||||
203A
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
32
uni/vga-1257.uni
Normal file
32
uni/vga-1257.uni
Normal file
@ -0,0 +1,32 @@
|
||||
20AC
|
||||
00B4
|
||||
201A
|
||||
02D9
|
||||
201E
|
||||
2026
|
||||
2020
|
||||
2021
|
||||
FFFF
|
||||
2030
|
||||
FFFF
|
||||
2039
|
||||
FFFF
|
||||
00A8
|
||||
02C7
|
||||
00B8
|
||||
FFFF
|
||||
2018
|
||||
2019
|
||||
201C
|
||||
201D
|
||||
2022
|
||||
2013
|
||||
2014
|
||||
FFFF
|
||||
2122
|
||||
FFFF
|
||||
203A
|
||||
FFFF
|
||||
00AF
|
||||
02DB
|
||||
FFFF
|
32
uni/vgagr.uni
Normal file
32
uni/vgagr.uni
Normal file
@ -0,0 +1,32 @@
|
||||
00A3
|
||||
2193
|
||||
25C0
|
||||
25B6
|
||||
2191
|
||||
2591
|
||||
25A0
|
||||
2592
|
||||
00B0
|
||||
2666
|
||||
2265
|
||||
03C0
|
||||
2500
|
||||
256C
|
||||
253C
|
||||
2264
|
||||
2514
|
||||
2518
|
||||
256A
|
||||
00B1
|
||||
23BA
|
||||
23BB
|
||||
23BC
|
||||
23BD
|
||||
2588
|
||||
252C
|
||||
2524
|
||||
251C
|
||||
2534
|
||||
250C
|
||||
2510
|
||||
2502
|
128
uni/win-1250.uni
Normal file
128
uni/win-1250.uni
Normal file
@ -0,0 +1,128 @@
|
||||
20AC
|
||||
FFFF
|
||||
201A
|
||||
FFFF
|
||||
201E
|
||||
2026
|
||||
2020
|
||||
2021
|
||||
FFFF
|
||||
2030
|
||||
0160
|
||||
2039
|
||||
015A
|
||||
0164
|
||||
017D
|
||||
0179
|
||||
FFFF
|
||||
2018
|
||||
2019
|
||||
201C
|
||||
201D
|
||||
2022
|
||||
2013
|
||||
2014
|
||||
FFFF
|
||||
2122
|
||||
0161
|
||||
203A
|
||||
015B
|
||||
0165
|
||||
017E
|
||||
017A
|
||||
00A0
|
||||
02C7
|
||||
02D8
|
||||
0141
|
||||
00A4
|
||||
0104
|
||||
00A6
|
||||
00A7
|
||||
00A8
|
||||
00A9
|
||||
015E
|
||||
00AB
|
||||
00AC
|
||||
00AD
|
||||
00AE
|
||||
017B
|
||||
00B0
|
||||
00B1
|
||||
02DB
|
||||
0142
|
||||
00B4
|
||||
00B5
|
||||
00B6
|
||||
00B7
|
||||
00B8
|
||||
0105
|
||||
015F
|
||||
00BB
|
||||
013D
|
||||
02DD
|
||||
013E
|
||||
017C
|
||||
0154
|
||||
00C1
|
||||
00C2
|
||||
0102
|
||||
00C4
|
||||
0139
|
||||
0106
|
||||
00C7
|
||||
010C
|
||||
00C9
|
||||
0118
|
||||
00CB
|
||||
011A
|
||||
00CD
|
||||
00CE
|
||||
010E
|
||||
0110
|
||||
0143
|
||||
0147
|
||||
00D3
|
||||
00D4
|
||||
0150
|
||||
00D6
|
||||
00D7
|
||||
0158
|
||||
016E
|
||||
00DA
|
||||
0170
|
||||
00DC
|
||||
00DD
|
||||
0162
|
||||
00DF
|
||||
0155
|
||||
00E1
|
||||
00E2
|
||||
0103
|
||||
00E4
|
||||
013A
|
||||
0107
|
||||
00E7
|
||||
010D
|
||||
00E9
|
||||
0119
|
||||
00EB
|
||||
011B
|
||||
00ED
|
||||
00EE
|
||||
010F
|
||||
0111
|
||||
0144
|
||||
0148
|
||||
00F3
|
||||
00F4
|
||||
0151
|
||||
00F6
|
||||
00F7
|
||||
0159
|
||||
016F
|
||||
00FA
|
||||
0171
|
||||
00FC
|
||||
00FD
|
||||
0163
|
||||
02D9
|
96
uni/win-1251.uni
Normal file
96
uni/win-1251.uni
Normal file
@ -0,0 +1,96 @@
|
||||
00A0
|
||||
040E
|
||||
045E
|
||||
0408
|
||||
00A4
|
||||
0490
|
||||
00A6
|
||||
00A7
|
||||
0401
|
||||
00A9
|
||||
0404
|
||||
00AB
|
||||
00AC
|
||||
00AD
|
||||
00AE
|
||||
0407
|
||||
00B0
|
||||
00B1
|
||||
0406
|
||||
0456
|
||||
0491
|
||||
00B5
|
||||
00B6
|
||||
00B7
|
||||
0451
|
||||
2116
|
||||
0454
|
||||
00BB
|
||||
0458
|
||||
0405
|
||||
0455
|
||||
0457
|
||||
0410
|
||||
0411
|
||||
0412
|
||||
0413
|
||||
0414
|
||||
0415
|
||||
0416
|
||||
0417
|
||||
0418
|
||||
0419
|
||||
041A
|
||||
041B
|
||||
041C
|
||||
041D
|
||||
041E
|
||||
041F
|
||||
0420
|
||||
0421
|
||||
0422
|
||||
0423
|
||||
0424
|
||||
0425
|
||||
0426
|
||||
0427
|
||||
0428
|
||||
0429
|
||||
042A
|
||||
042B
|
||||
042C
|
||||
042D
|
||||
042E
|
||||
042F
|
||||
0430
|
||||
0431
|
||||
0432
|
||||
0433
|
||||
0434
|
||||
0435
|
||||
0436
|
||||
0437
|
||||
0438
|
||||
0439
|
||||
043A
|
||||
043B
|
||||
043C
|
||||
043D
|
||||
043E
|
||||
043F
|
||||
0440
|
||||
0441
|
||||
0442
|
||||
0443
|
||||
0444
|
||||
0445
|
||||
0446
|
||||
0447
|
||||
0448
|
||||
0449
|
||||
044A
|
||||
044B
|
||||
044C
|
||||
044D
|
||||
044E
|
||||
044F
|
128
uni/win-1252.uni
Normal file
128
uni/win-1252.uni
Normal file
@ -0,0 +1,128 @@
|
||||
20AC
|
||||
FFFF
|
||||
201A
|
||||
0192
|
||||
201E
|
||||
2026
|
||||
2020
|
||||
2021
|
||||
02C6
|
||||
2030
|
||||
0160
|
||||
2039
|
||||
0152
|
||||
FFFF
|
||||
017D
|
||||
FFFF
|
||||
FFFF
|
||||
2018
|
||||
2019
|
||||
201C
|
||||
201D
|
||||
2022
|
||||
2013
|
||||
2014
|
||||
02DC
|
||||
2122
|
||||
0161
|
||||
203A
|
||||
0153
|
||||
FFFF
|
||||
017E
|
||||
0178
|
||||
00A0
|
||||
00A1
|
||||
00A2
|
||||
00A3
|
||||
00A4
|
||||
00A5
|
||||
00A6
|
||||
00A7
|
||||
00A8
|
||||
00A9
|
||||
00AA
|
||||
00AB
|
||||
00AC
|
||||
00AD
|
||||
00AE
|
||||
00AF
|
||||
00B0
|
||||
00B1
|
||||
00B2
|
||||
00B3
|
||||
00B4
|
||||
00B5
|
||||
00B6
|
||||
00B7
|
||||
00B8
|
||||
00B9
|
||||
00BA
|
||||
00BB
|
||||
00BC
|
||||
00BD
|
||||
00BE
|
||||
00BF
|
||||
00C0
|
||||
00C1
|
||||
00C2
|
||||
00C3
|
||||
00C4
|
||||
00C5
|
||||
00C6
|
||||
00C7
|
||||
00C8
|
||||
00C9
|
||||
00CA
|
||||
00CB
|
||||
00CC
|
||||
00CD
|
||||
00CE
|
||||
00CF
|
||||
00D0
|
||||
00D1
|
||||
00D2
|
||||
00D3
|
||||
00D4
|
||||
00D5
|
||||
00D6
|
||||
00D7
|
||||
00D8
|
||||
00D9
|
||||
00DA
|
||||
00DB
|
||||
00DC
|
||||
00DD
|
||||
00DE
|
||||
00DF
|
||||
00E0
|
||||
00E1
|
||||
00E2
|
||||
00E3
|
||||
00E4
|
||||
00E5
|
||||
00E6
|
||||
00E7
|
||||
00E8
|
||||
00E9
|
||||
00EA
|
||||
00EB
|
||||
00EC
|
||||
00ED
|
||||
00EE
|
||||
00EF
|
||||
00F0
|
||||
00F1
|
||||
00F2
|
||||
00F3
|
||||
00F4
|
||||
00F5
|
||||
00F6
|
||||
00F7
|
||||
00F8
|
||||
00F9
|
||||
00FA
|
||||
00FB
|
||||
00FC
|
||||
00FD
|
||||
00FE
|
||||
00FF
|
128
uni/win-1253.uni
Normal file
128
uni/win-1253.uni
Normal file
@ -0,0 +1,128 @@
|
||||
20AC
|
||||
FFFF
|
||||
201A
|
||||
0192
|
||||
201E
|
||||
2026
|
||||
2020
|
||||
2021
|
||||
FFFF
|
||||
2030
|
||||
FFFF
|
||||
2039
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
2018
|
||||
2019
|
||||
201C
|
||||
201D
|
||||
2022
|
||||
2013
|
||||
2014
|
||||
FFFF
|
||||
2122
|
||||
FFFF
|
||||
203A
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
FFFF
|
||||
00A0
|
||||
0385
|
||||
0386
|
||||
00A3
|
||||
00A4
|
||||
00A5
|
||||
00A6
|
||||
00A7
|
||||
00A8
|
||||
00A9
|
||||
FFFF
|
||||
00AB
|
||||
00AC
|
||||
00AD
|
||||
00AE
|
||||
2015
|
||||
00B0
|
||||
00B1
|
||||
00B2
|
||||
00B3
|
||||
0384
|
||||
00B5
|
||||
00B6
|
||||
00B7
|
||||
0388
|
||||
0389
|
||||
038A
|
||||
00BB
|
||||
038C
|
||||
00BD
|
||||
038E
|
||||
038F
|
||||
0390
|
||||
0391
|
||||
0392
|
||||
0393
|
||||
0394
|
||||
0395
|
||||
0396
|
||||
0397
|
||||
0398
|
||||
0399
|
||||
039A
|
||||
039B
|
||||
039C
|
||||
039D
|
||||
039E
|
||||
039F
|
||||
03A0
|
||||
03A1
|
||||
FFFF
|
||||
03A3
|
||||
03A4
|
||||
03A5
|
||||
03A6
|
||||
03A7
|
||||
03A8
|
||||
03A9
|
||||
03AA
|
||||
03AB
|
||||
03AC
|
||||
03AD
|
||||
03AE
|
||||
03AF
|
||||
03B0
|
||||
03B1
|
||||
03B2
|
||||
03B3
|
||||
03B4
|
||||
03B5
|
||||
03B6
|
||||
03B7
|
||||
03B8
|
||||
03B9
|
||||
03BA
|
||||
03BB
|
||||
03BC
|
||||
03BD
|
||||
03BE
|
||||
03BF
|
||||
03C0
|
||||
03C1
|
||||
03C2
|
||||
03C3
|
||||
03C4
|
||||
03C5
|
||||
03C6
|
||||
03C7
|
||||
03C8
|
||||
03C9
|
||||
03CA
|
||||
03CB
|
||||
03CC
|
||||
03CD
|
||||
03CE
|
||||
FFFF
|
128
uni/win-1254.uni
Normal file
128
uni/win-1254.uni
Normal file
@ -0,0 +1,128 @@
|
||||
20AC
|
||||
FFFF
|
||||
201A
|
||||
0192
|
||||
201E
|
||||
2026
|
||||
2020
|
||||
2021
|
||||
02C6
|
||||
2030
|
||||
0160
|
||||
2039
|
||||
0152
|
||||
FFFF
|
||||
017D
|
||||
FFFF
|
||||
FFFF
|
||||
2018
|
||||
2019
|
||||
201C
|
||||
201D
|
||||
2022
|
||||
2013
|
||||
2014
|
||||
02DC
|
||||
2122
|
||||
0161
|
||||
203A
|
||||
0153
|
||||
FFFF
|
||||
017E
|
||||
0178
|
||||
00A0
|
||||
00A1
|
||||
00A2
|
||||
00A3
|
||||
00A4
|
||||
00A5
|
||||
00A6
|
||||
00A7
|
||||
00A8
|
||||
00A9
|
||||
00AA
|
||||
00AB
|
||||
00AC
|
||||
00AD
|
||||
00AE
|
||||
00AF
|
||||
00B0
|
||||
00B1
|
||||
00B2
|
||||
00B3
|
||||
00B4
|
||||
00B5
|
||||
00B6
|
||||
00B7
|
||||
00B8
|
||||
00B9
|
||||
00BA
|
||||
00BB
|
||||
00BC
|
||||
00BD
|
||||
00BE
|
||||
00BF
|
||||
00C0
|
||||
00C1
|
||||
00C2
|
||||
00C3
|
||||
00C4
|
||||
00C5
|
||||
00C6
|
||||
00C7
|
||||
00C8
|
||||
00C9
|
||||
00CA
|
||||
00CB
|
||||
00CC
|
||||
00CD
|
||||
00CE
|
||||
00CF
|
||||
011E
|
||||
00D1
|
||||
00D2
|
||||
00D3
|
||||
00D4
|
||||
00D5
|
||||
00D6
|
||||
00D7
|
||||
00D8
|
||||
00D9
|
||||
00DA
|
||||
00DB
|
||||
00DC
|
||||
0130
|
||||
015E
|
||||
00DF
|
||||
00E0
|
||||
00E1
|
||||
00E2
|
||||
00E3
|
||||
00E4
|
||||
00E5
|
||||
00E6
|
||||
00E7
|
||||
00E8
|
||||
00E9
|
||||
00EA
|
||||
00EB
|
||||
00EC
|
||||
00ED
|
||||
00EE
|
||||
00EF
|
||||
011F
|
||||
00F1
|
||||
00F2
|
||||
00F3
|
||||
00F4
|
||||
00F5
|
||||
00F6
|
||||
00F7
|
||||
00F8
|
||||
00F9
|
||||
00FA
|
||||
00FB
|
||||
00FC
|
||||
0131
|
||||
015F
|
||||
00FF
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user