1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
-- There can be multiple treatments.lfg files in the tree and all are loaded in
-- the order specified by tree order access. The first treatment of a file
-- always wins, so one can overload. These files are not (to be) loaded with
-- font definitions. (Experiment as part of writing the font manual.)
--
-- So there are several ways to fix a font: add a patcher to a goodie file and
-- load that one. Such a patch can end up in the cached file. Treatments are
-- applied at runtime. An experimental auto-loaded goodie approach is not yet
-- enabled and will never be if treatments can do the job.
local report = fonts.treatments.report
local fix_unifraktur = {
comment = "suspicious x height",
fixes = function(data)
local pfminfo = data.metadata.pfminfo
if pfminfo then
local os2_xheight = pfminfo.os2_xheight
if os2_xheight and os2_xheight < 350 then
report("suspicious x-height %a, nilling",os2_xheight)
pfminfo.os2_xheight_original = os2_xheight
pfminfo.os2_xheight = nil
end
end
end,
}
-- local fix_lmmonoregular = {
-- --
-- -- there are now some extra safeguards for idris
-- --
-- comment = "wrong widths of some glyphs",
-- fixes = function(data)
-- report("fixing some wrong widths")
-- local unicodes = data.resources.unicodes
-- local descriptions = data.descriptions
-- local function getdescription(name)
-- local unicode = unicodes[name]
-- if not unicode then
-- report("no valid unicode for %a",name)
-- return
-- end
-- local description = descriptions[unicode]
-- if not description then
-- report("no glyph names %a in font",name)
-- return
-- end
-- return description
-- end
-- local zero = getdescription("zero")
-- if not zero then
-- return
-- end
-- local defaultwidth = zero.width
-- local function setwidth(name)
-- local data = getdescription(name)
-- if data then
-- data.width = defaultwidth
-- end
-- end
-- setwidth("six")
-- setwidth("nine")
-- setwidth("caron")
-- setwidth("perthousand")
-- setwidth("numero")
-- setwidth("caron.cap")
-- setwidth("six.taboldstyle")
-- setwidth("nine.taboldstyle")
-- setwidth("dollar.oldstyle")
-- end
-- }
return {
name = "treatments",
version = "1.00",
comment = "Goodies that deals with some general issues.",
author = "Hans Hagen",
copyright = "ConTeXt development team",
treatments = {
-- we need to complete this list in order to be able to warn
-- users not to include these files unless permitted
["adobeheitistd-regular.otf"] = {
comment = "this font is part of acrobat",
ignored = false,
-- included = false, -- not yet
},
-- just an experiment .. normally no big deal but I ran into
-- such case
["crap.ttf"] = {
comment = "a text file with suffix ttf", -- used in test file
ignored = true,
},
["lingoes.ttf"] = {
comment = "bugged file",
ignored = true,
},
-- harmless example
-- ["copperplatethirtythreebc.ttf"] = {
-- comment = "hangs and has no hyphen",
-- ignored = true,
-- },
-- ["latinmodern-math.otf"] = {
-- comment = "experimental",
-- },
["lmmono12regular.otf"] = fix_lmmonoregular,
["unifrakturcook.ttf"] = fix_unifraktur,
["unifrakturmaguntia.ttf"] = fix_unifraktur,
},
}
|