cad-editor/assets/fonts/greekp.lff
Hakan Seven c1b33677e2 feat(fonts): switch the text engine from CXF to LibreCAD LFF fonts
Replace the small QCAD CXF stroke-font set with the full LibreCAD LFF font
library (46 fonts) and a new LFF parser/engine in src/scene/lff.rs. The
parser reads the `[hex] char` glyph blocks, tessellates `,A<bulge>` arcs, and
resolves `C<hex>` glyph references. Per LibreCAD's RS_Polyline convention a
vertex's bulge curves the segment ending at that vertex — getting this wrong
turned round letters like O into sideways capsules.

Font name resolution mirrors LibreCAD: match by file stem, map common
AutoCAD/DXF SHX names (txt, isocp, complex, italic, gothic*, gost, …) to the
nearest LFF family, and fall back to `standard`. A missing glyph in the chosen
family falls back to the broad `unicode` font so accented/Cyrillic/Greek text
still renders. Cap height stays 9 units, so the text scale is unchanged.

All text consumers move from cxf:: to lff::; complex linetypes still render
embedded text but no longer draw embedded shapes (LibreCAD ships no shape
file). The CXF module and every *.cxf asset are removed, and the MText / text
style font pickers list the LFF families.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 03:31:20 +03:00

758 lines
9.5 KiB
Text

# Format: LibreCAD Font 1
# Creator: LibreCAD
# Version: master
# Name: Greek Plain
# Encoding: UTF-8
# LetterSpacing: 3
# WordSpacing: 6.75
# LineSpacingFactor: 1
# Author: Hershey fonts
# License: public domain
[0021] !
0,9;0,4
1,9;1,4
0,1;0,0
0,0;1,0
1,0;1,1
1,1;0,1
[0022] "
0,9;0,5
4,9;4,5
[0023] #
2.99999,10;1,-1
6.00001,10;4,-1
0,6.00001;7,6.00001
0,2.99999;7,2.99999
[0024] $
6.00001,8.00001;4,9
4,9;2,9
2,9;0,8.00001
0,8.00001;0,6.00001
0,6.00001;2,5
2,5;5,4
5,4;6.00001,2.99999
6.00001,2.99999;6.00001,1
6.00001,1;4,0
4,0;2,0
2,0;0,1
2.99999,10;2.99999,-1
[0025] %
12,11;0,-2
2.99999,11;4,10
4,10;4,8.00001
4,8.00001;2.99999,7
2.99999,7;1,7
1,7;0,8.00001
0,8.00001;0,10
0,10;1,11
1,11;2.99999,11
2.99999,11;7,10
7,10;10,10
10,10;12,11
9,2;8.00001,1
8.00001,1;8.00001,-1
8.00001,-1;9,-2
9,-2;11,-2
11,-2;12,-1
12,-1;12,1
12,1;11,2
11,2;9,2
[0026] &
8.00001,4;7,4
7,4;6.00001,2.99999
6.00001,2.99999;5,1
5,1;4,0
4,0;1,0
1,0;0,1
0,1;0,2.99999
0,2.99999;1,4
1,4;4,5
4,5;5,6.00001
5,6.00001;5,8.00001
5,8.00001;4,9
4,9;2,9
2,9;1,8.00001
1,8.00001;1,6.00001
1,6.00001;2.99999,2.99999
2.99999,2.99999;5,1
5,1;7,0
7,0;8.00001,0
[0027] '
1,8.00001;0,8.00001
0,8.00001;0,9
0,9;1,9
1,9;1,7
1,7;0,5
[0028] (
2.99999,10;1,8.00001
1,8.00001;0,6.00001
0,6.00001;0,2.99999
0,2.99999;1,1
1,1;2.99999,-1
[0029] )
0,10;2,8.00001
2,8.00001;2.99999,6.00001
2.99999,6.00001;2.99999,2.99999
2.99999,2.99999;2,1
2,1;0,-1
[002a] *
2.99999,12;2.99999,6.00001
0,11;6.00001,7
6.00001,11;0,7
[002b] +
4,8.00001;4,0
0,4;8.00001,4
[002c] ,
1,0;0,0
0,0;0,1
0,1;1,1
1,1;1,-1
1,-1;0,-2.99999
[002d] -
0,4;8.00001,4
[002e] .
0,1;0,0
0,0;1,0
1,0;1,1
1,1;0,1
[002f] /
8.00001,10;0,-1
[0030] 0
2.99999,9;1,8.00001
1,8.00001;0,6.00001
0,6.00001;0,2.99999
0,2.99999;1,1
1,1;2.99999,0
2.99999,0;5,1
5,1;6.00001,2.99999
6.00001,2.99999;6.00001,6.00001
6.00001,6.00001;5,8.00001
5,8.00001;2.99999,9
[0031] 1
0,7;2,9
2,9;2,0
[0032] 2
0,8.00001;2,9
2,9;4,9
4,9;6.00001,8.00001
6.00001,8.00001;6.00001,6.00001
6.00001,6.00001;5,4
5,4;0,0
0,0;6.00001,0
[0033] 3
0,8.00001;2,9
2,9;4,9
4,9;6.00001,8.00001
6.00001,8.00001;6.00001,6.00001
6.00001,6.00001;4,5
2.99999,5;4,5
4,5;6.00001,4
6.00001,4;6.00001,1
6.00001,1;4,0
4,0;2,0
2,0;0,1
[0034] 4
5,9;5,0
5,9;0,2.99999
0,2.99999;8.00001,2.99999
[0035] 5
1,9;0,5
0,5;2,6.00001
2,6.00001;2.99999,6.00001
2.99999,6.00001;5,5
5,5;6.00001,2.99999
6.00001,2.99999;5,1
5,1;2.99999,0
2.99999,0;2,0
2,0;0,1
1,9;5,9
[0036] 6
5,9;2.99999,9
2.99999,9;1,8.00001
1,8.00001;0,6.00001
0,6.00001;0,2.99999
0,2.99999;1,1
1,1;2.99999,0
2.99999,0;5,1
5,1;6.00001,2.99999
6.00001,2.99999;5,5
5,5;2.99999,6.00001
2.99999,6.00001;1,5
1,5;0,2.99999
[0037] 7
6.00001,9;2,0
0,9;6.00001,9
[0038] 8
2,9;0,8.00001
0,8.00001;0,6.00001
0,6.00001;2,5
2,5;4,5
4,5;6.00001,6.00001
6.00001,6.00001;6.00001,8.00001
6.00001,8.00001;4,9
4,9;2,9
2,5;0,4
0,4;0,1
0,1;2,0
2,0;4,0
4,0;6.00001,1
6.00001,1;6.00001,4
6.00001,4;4,5
[0039] 9
6.00001,6.00001;5,4
5,4;2.99999,2.99999
2.99999,2.99999;1,4
1,4;0,6.00001
0,6.00001;1,8.00001
1,8.00001;2.99999,9
2.99999,9;5,8.00001
5,8.00001;6.00001,6.00001
6.00001,6.00001;6.00001,2.99999
6.00001,2.99999;5,1
5,1;2.99999,0
2.99999,0;1,0
[003a] :
0,6.00001;0,5
0,5;1,5
1,5;1,6.00001
1,6.00001;0,6.00001
0,1;0,0
0,0;1,0
1,0;1,1
1,1;0,1
[003b] ;
0,6.00001;0,5
0,5;1,5
1,5;1,6.00001
1,6.00001;0,6.00001
1,0;0,0
0,0;0,1
0,1;1,1
1,1;1,-1
1,-1;0,-2.99999
[003c] <
10,10;0,4
0,4;10,-2
[003d] =
0,6.00001;8.00001,6.00001
0,2;8.00001,2
[003e] >
0,10;10,4
10,4;0,-2
[003f] ?
0,8.00001;2,9
2,9;2.99999,9
2.99999,9;5,8.00001
5,8.00001;5,6.00001
5,6.00001;2,5
2,5;2,4
2,4;2.99999,4
2.99999,4;2.99999,5
2.99999,5;5,6.00001
2,1;2,0
2,0;2.99999,0
2.99999,0;2.99999,1
2.99999,1;2,1
[0040] @
9,6.00001;7,7
7,7;5,7
5,7;4,5
4,5;4,4
4,4;5,2
5,2;7,2
7,2;9,2.99999
9,7;9,2.99999
9,2.99999;10,2
10,2;12,2
12,2;13,4
13,4;13,5
13,5;12,8.00001
12,8.00001;10,10
10,10;7,11
7,11;6.00001,11
6.00001,11;2.99999,10
2.99999,10;1,8.00001
1,8.00001;0,5
0,5;0,4
0,4;1,1
1,1;2.99999,-1
2.99999,-1;6.00001,-2
6.00001,-2;7,-2
7,-2;10,-1
[0041] A
4,9;0,0
4,9;8.00001,0
2,2.99999;6.00001,2.99999
[0042] B
0,9;0,0
0,9;4,9
4,9;6.00001,8.00001
6.00001,8.00001;6.00001,6.00001
6.00001,6.00001;4,5
0,5;4,5
4,5;6.00001,4
6.00001,4;6.00001,1
6.00001,1;4,0
4,0;0,0
[0043] C
0,9;0,0
0,9;6.00001,9
[0044] D
4,9;0,0
4,9;8.00001,0
0,0;8.00001,0
[0045] E
0,9;0,0
0,9;6.00001,9
0,5;4,5
0,0;6.00001,0
[0046] F
6.00001,9;0,0
0,9;6.00001,9
0,0;6.00001,0
[0047] G
0,9;0,0
6.00001,9;6.00001,0
0,5;6.00001,5
[0048] H
2.99999,9;1,8.00001
1,8.00001;0,6.00001
0,6.00001;0,2.99999
0,2.99999;1,1
1,1;2.99999,0
2.99999,0;4,0
4,0;6.00001,1
6.00001,1;7,2.99999
7,2.99999;7,6.00001
7,6.00001;6.00001,8.00001
6.00001,8.00001;4,9
4,9;2.99999,9
2,5;5,4
5,5;2,4
[0049] I
0,9;0,0
[004a] J
0,9;0,0
6.00001,9;0,2.99999
2,5;6.00001,0
[004b] K
4,9;0,0
4,9;8.00001,0
[004c] L
0,9;0,0
0,9;4,0
8.00001,9;4,0
8.00001,9;8.00001,0
[004d] M
0,9;0,0
0,9;6.00001,0
6.00001,9;6.00001,0
[004e] N
0,9;6.00001,9
1,5;5,4
5,5;1,4
0,0;6.00001,0
[004f] O
2.99999,9;1,8.00001
1,8.00001;0,6.00001
0,6.00001;0,2.99999
0,2.99999;1,1
1,1;2.99999,0
2.99999,0;4,0
4,0;6.00001,1
6.00001,1;7,2.99999
7,2.99999;7,6.00001
7,6.00001;6.00001,8.00001
6.00001,8.00001;4,9
4,9;2.99999,9
[0050] P
0,9;0,0
6.00001,9;6.00001,0
0,9;6.00001,9
[0051] Q
0,9;0,0
0,9;4,9
4,9;6.00001,8.00001
6.00001,8.00001;6.00001,5
6.00001,5;4,4
4,4;0,4
[0052] R
0,9;2.99999,5
2.99999,5;0,0
0,9;6.00001,9
0,0;6.00001,0
[0053] S
4,9;4,0
0,9;8.00001,9
[0054] T
0,7;0,8.00001
0,8.00001;1,9
1,9;2,9
2,9;2.99999,8.00001
2.99999,8.00001;4,6.00001
4,6.00001;4,0
8.00001,7;8.00001,8.00001
8.00001,8.00001;7,9
7,9;6.00001,9
6.00001,9;5,8.00001
5,8.00001;4,6.00001
[0055] U
4,9;4,0
2,7;0,6.00001
0,6.00001;0,2.99999
0,2.99999;2,2
2,2;6.00001,2
6.00001,2;8.00001,2.99999
8.00001,2.99999;8.00001,6.00001
8.00001,6.00001;6.00001,7
6.00001,7;2,7
[0056] V
0,9;6.00001,0
6.00001,9;0,0
[0057] W
4,9;4,0
0,7;1,6.00001
1,6.00001;1,2.99999
1,2.99999;2.99999,2
2.99999,2;5,2
5,2;7,2.99999
7,2.99999;7,6.00001
7,6.00001;8.00001,7
[0058] X
0,0;2,0
2,0;0,4
0,4;0,6.00001
0,6.00001;1,8.00001
1,8.00001;2.99999,9
2.99999,9;4,9
4,9;6.00001,8.00001
6.00001,8.00001;7,6.00001
7,6.00001;7,4
7,4;5,0
5,0;7,0
[005b] [
0,14;0,-6.00001
1,14;1,-6.00001
0,14;5,14
0,-6.00001;5,-6.00001
[005c] \
0,9;10,-1
[005d] ]
4,14;4,-6.00001
5,14;5,-6.00001
0,14;5,14
0,-6.00001;5,-6.00001
[005e] ^
2.99999,9;2.99999,-2
0,6.00001;1,7
1,7;2.99999,10
2.99999,10;5,7
5,7;6.00001,6.00001
1,7;2.99999,9
2.99999,9;5,7
[005f] _
0,-2;10,-2
[0060] `
1,9;0,7
0,7;0,5
0,5;1,5
1,5;1,6.00001
1,6.00001;0,6.00001
[0061] a
4,9;0,0
4,9;8.00001,0
2,2.99999;6.00001,2.99999
[0062] b
0,9;0,0
0,9;4,9
4,9;6.00001,8.00001
6.00001,8.00001;6.00001,6.00001
6.00001,6.00001;4,5
0,5;4,5
4,5;6.00001,4
6.00001,4;6.00001,1
6.00001,1;4,0
4,0;0,0
[0063] c
0,9;0,0
0,9;6.00001,9
[0064] d
4,9;0,0
4,9;8.00001,0
0,0;8.00001,0
[0065] e
0,9;0,0
0,9;6.00001,9
0,5;4,5
0,0;6.00001,0
[0066] f
6.00001,9;0,0
0,9;6.00001,9
0,0;6.00001,0
[0067] g
0,9;0,0
6.00001,9;6.00001,0
0,5;6.00001,5
[0068] h
2.99999,9;1,8.00001
1,8.00001;0,6.00001
0,6.00001;0,2.99999
0,2.99999;1,1
1,1;2.99999,0
2.99999,0;4,0
4,0;6.00001,1
6.00001,1;7,2.99999
7,2.99999;7,6.00001
7,6.00001;6.00001,8.00001
6.00001,8.00001;4,9
4,9;2.99999,9
2,5;5,4
5,5;2,4
[0069] i
0,9;0,0
[006a] j
0,9;0,0
6.00001,9;0,2.99999
2,5;6.00001,0
[006b] k
4,9;0,0
4,9;8.00001,0
[006c] l
0,9;0,0
0,9;4,0
8.00001,9;4,0
8.00001,9;8.00001,0
[006d] m
0,9;0,0
0,9;6.00001,0
6.00001,9;6.00001,0
[006e] n
0,9;6.00001,9
1,5;5,4
5,5;1,4
0,0;6.00001,0
[006f] o
2.99999,9;1,8.00001
1,8.00001;0,6.00001
0,6.00001;0,2.99999
0,2.99999;1,1
1,1;2.99999,0
2.99999,0;4,0
4,0;6.00001,1
6.00001,1;7,2.99999
7,2.99999;7,6.00001
7,6.00001;6.00001,8.00001
6.00001,8.00001;4,9
4,9;2.99999,9
[0070] p
0,9;0,0
6.00001,9;6.00001,0
0,9;6.00001,9
[0071] q
0,9;0,0
0,9;4,9
4,9;6.00001,8.00001
6.00001,8.00001;6.00001,5
6.00001,5;4,4
4,4;0,4
[0072] r
0,9;2.99999,5
2.99999,5;0,0
0,9;6.00001,9
0,0;6.00001,0
[0073] s
4,9;4,0
0,9;8.00001,9
[0074] t
0,7;0,8.00001
0,8.00001;1,9
1,9;2,9
2,9;2.99999,8.00001
2.99999,8.00001;4,6.00001
4,6.00001;4,0
8.00001,7;8.00001,8.00001
8.00001,8.00001;7,9
7,9;6.00001,9
6.00001,9;5,8.00001
5,8.00001;4,6.00001
[0075] u
4,9;4,0
2,7;0,6.00001
0,6.00001;0,2.99999
0,2.99999;2,2
2,2;6.00001,2
6.00001,2;8.00001,2.99999
8.00001,2.99999;8.00001,6.00001
8.00001,6.00001;6.00001,7
6.00001,7;2,7
[0076] v
0,9;6.00001,0
6.00001,9;0,0
[0077] w
4,9;4,0
0,7;1,6.00001
1,6.00001;1,2.99999
1,2.99999;2.99999,2
2.99999,2;5,2
5,2;7,2.99999
7,2.99999;7,6.00001
7,6.00001;8.00001,7
[0078] x
0,0;2,0
2,0;0,4
0,4;0,6.00001
0,6.00001;1,8.00001
1,8.00001;2.99999,9
2.99999,9;4,9
4,9;6.00001,8.00001
6.00001,8.00001;7,6.00001
7,6.00001;7,4
7,4;5,0
5,0;7,0
[007b] {
2.99999,14;1,13
1,13;0,12
0,12;0,10
0,10;2,8.00001
2,8.00001;2.99999,6.00001
1,13;0,10
2.99999,8.00001;2,5
0,12;1,10
1,10;2.99999,8.00001
2.99999,8.00001;2.99999,6.00001
2.99999,6.00001;2,5
2,5;0,4
0,4;2,2.99999
2,2.99999;2.99999,2
2.99999,2;2.99999,0
2.99999,0;1,-2
1,-2;0,-4
2,2.99999;2.99999,0
0,-2;1,-5
2.99999,2;2,0
2,0;0,-2
0,-2;0,-4
0,-4;1,-5
1,-5;2.99999,-6.00001
[007c] |
0,10;0,-1
[007d] }
0,14;2,13
2,13;2.99999,12
2.99999,12;2.99999,10
2.99999,10;1,8.00001
1,8.00001;0,6.00001
2,13;2.99999,10
0,8.00001;1,5
2.99999,12;2,10
2,10;0,8.00001
0,8.00001;0,6.00001
0,6.00001;1,5
1,5;2.99999,4
2.99999,4;1,2.99999
1,2.99999;0,2
0,2;0,0
0,0;2,-2
2,-2;2.99999,-4
1,2.99999;0,0
2.99999,-2;2,-5
0,2;1,0
1,0;2.99999,-2
2.99999,-2;2.99999,-4
2.99999,-4;2,-5
2,-5;0,-6.00001
[2075] ⁵
2,9;0,9;0,7;1,7;2,6,A-0.207107;2,5.5;1,4.5,A-0.207107;0,4.5