Parse metrics directly from .ttf files
Summary: Fixes T1325. This has the advantage of not having to do the mapping manually. Also it means that characters like \neq are included in the mapping, so this resolves T1323 as well. I opted to group the metrics by character instead of by metric type because I think it'll gzip better and it makes getCharacterMetrics simpler anyway. Test Plan: The test page looks identical to the pixel to my eye. Reviewers: emily Reviewed By: emily Maniphest Tasks: T1323, T1325 Differential Revision: http://phabricator.khanacademy.org/D3535
This commit is contained in:
parent
9fc357b8a1
commit
7f25fd7dc9
|
@ -444,10 +444,9 @@ var makeText = function(value, style) {
|
|||
if (metrics) {
|
||||
var textNode = new domTree.textNode(value, metrics.height,
|
||||
metrics.depth);
|
||||
if (metrics.italicCorrection > 0) {
|
||||
if (metrics.italic > 0) {
|
||||
var span = makeSpan([], [textNode]);
|
||||
|
||||
span.style["margin-right"] = metrics.italicCorrection + "em";
|
||||
span.style["margin-right"] = metrics.italic + "em";
|
||||
|
||||
return span;
|
||||
} else {
|
||||
|
@ -461,11 +460,11 @@ var makeText = function(value, style) {
|
|||
};
|
||||
|
||||
var mathit = function(value) {
|
||||
return makeSpan(["mathit"], [makeText(value, "italic")]);
|
||||
return makeSpan(["mathit"], [makeText(value, "math-italic")]);
|
||||
};
|
||||
|
||||
var mathrm = function(value) {
|
||||
return makeText(value, "roman");
|
||||
return makeText(value, "main-regular");
|
||||
};
|
||||
|
||||
var buildTree = function(tree) {
|
||||
|
|
607
fontMetrics.js
607
fontMetrics.js
File diff suppressed because one or more lines are too long
46
metric_parse.rb
Normal file
46
metric_parse.rb
Normal file
|
@ -0,0 +1,46 @@
|
|||
require 'json'
|
||||
|
||||
require 'rubygems'
|
||||
|
||||
require 'ttfunk'
|
||||
|
||||
def metrics_for_file(filename)
|
||||
file = TTFunk::File.open(filename)
|
||||
per_em = 1.0 * file.header.units_per_em
|
||||
|
||||
chars = {}
|
||||
|
||||
file.cmap.unicode[0].code_map.sort.each do |u, g|
|
||||
horiz = file.horizontal_metrics.for(g)
|
||||
|
||||
# width = (horiz.advance_width / per_em).round(3)
|
||||
height = 0
|
||||
depth = 0
|
||||
italic = 0
|
||||
|
||||
glyph = file.glyph_outlines.for(g)
|
||||
if glyph
|
||||
height = (glyph.y_max / per_em).round(3)
|
||||
depth = (-glyph.y_min / per_em).round(3)
|
||||
italic = [0, (glyph.x_max - horiz.advance_width) / per_em].max.round(3)
|
||||
end
|
||||
|
||||
chars[u] = {
|
||||
# :width => width,
|
||||
:height => height,
|
||||
:depth => depth,
|
||||
:italic => italic,
|
||||
}
|
||||
end
|
||||
|
||||
chars
|
||||
end
|
||||
|
||||
font_dir = File.join(File.dirname(__FILE__), 'static/fonts/')
|
||||
metrics = {}
|
||||
|
||||
%w[main-regular math-italic].each do |face|
|
||||
metrics[face] = metrics_for_file(File.join(font_dir, 'katex_%s.ttf' % face))
|
||||
end
|
||||
|
||||
puts "var metricMap = %s;" % metrics.to_json
|
|
@ -1,860 +0,0 @@
|
|||
(FAMILY cmex10)
|
||||
(CODINGSCHEME FONTSPECIFIC)
|
||||
(DESIGNSIZE R 10.0)
|
||||
(DESIGNUNITS R 1000)
|
||||
(COMMENT DESIGNSIZE (1 em) IS IN POINTS)
|
||||
(COMMENT OTHER DIMENSIONS ARE MULTIPLES OF DESIGNSIZE/1000)
|
||||
(BOUNDARYCHAR O 201)
|
||||
(FONTDIMEN
|
||||
(SLANT R 0.000000)
|
||||
(SPACE D 333)
|
||||
(STRETCH D 166)
|
||||
(SHRINK D 111)
|
||||
(XHEIGHT D 400)
|
||||
(QUAD D 1000)
|
||||
(EXTRASPACE D 111)
|
||||
)
|
||||
(LIGTABLE
|
||||
)
|
||||
(CHARACTER O 0 (comment parenleftbig)
|
||||
(CHARWD R 458)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1159)
|
||||
)
|
||||
(CHARACTER O 1 (comment parenrightbig)
|
||||
(CHARWD R 458)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1159)
|
||||
)
|
||||
(CHARACTER O 2 (comment bracketleftbig)
|
||||
(CHARWD R 416)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1159)
|
||||
)
|
||||
(CHARACTER O 3 (comment bracketrightbig)
|
||||
(CHARWD R 416)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1159)
|
||||
)
|
||||
(CHARACTER O 4 (comment floorleftbig)
|
||||
(CHARWD R 472)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1159)
|
||||
)
|
||||
(CHARACTER O 5 (comment floorrightbig)
|
||||
(CHARWD R 472)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1159)
|
||||
)
|
||||
(CHARACTER O 6 (comment ceilingleftbig)
|
||||
(CHARWD R 472)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1159)
|
||||
)
|
||||
(CHARACTER O 7 (comment ceilingrightbig)
|
||||
(CHARWD R 472)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1159)
|
||||
)
|
||||
(CHARACTER O 10 (comment braceleftbig)
|
||||
(CHARWD R 583)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1159)
|
||||
)
|
||||
(CHARACTER O 11 (comment bracerightbig)
|
||||
(CHARWD R 583)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1159)
|
||||
)
|
||||
(CHARACTER O 12 (comment angbracketleftbig)
|
||||
(CHARWD R 472)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1160)
|
||||
)
|
||||
(CHARACTER O 13 (comment angbracketrightbig)
|
||||
(CHARWD R 472)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1160)
|
||||
)
|
||||
(CHARACTER O 14 (comment vextendsingle)
|
||||
(CHARWD R 333)
|
||||
(CHARHT R 21)
|
||||
(CHARDP R 621)
|
||||
)
|
||||
(CHARACTER O 15 (comment vextenddouble)
|
||||
(CHARWD R 555)
|
||||
(CHARHT R 21)
|
||||
(CHARDP R 621)
|
||||
)
|
||||
(CHARACTER O 16 (comment slashbig)
|
||||
(CHARWD R 577)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1159)
|
||||
)
|
||||
(CHARACTER O 17 (comment backslashbig)
|
||||
(CHARWD R 577)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1159)
|
||||
)
|
||||
(CHARACTER O 20 (comment parenleftBig)
|
||||
(CHARWD R 597)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1759)
|
||||
)
|
||||
(CHARACTER O 21 (comment parenrightBig)
|
||||
(CHARWD R 597)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1759)
|
||||
)
|
||||
(CHARACTER O 22 (comment parenleftbigg)
|
||||
(CHARWD R 736)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 23 (comment parenrightbigg)
|
||||
(CHARWD R 736)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 24 (comment bracketleftbigg)
|
||||
(CHARWD R 527)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 25 (comment bracketrightbigg)
|
||||
(CHARWD R 527)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 26 (comment floorleftbigg)
|
||||
(CHARWD R 583)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 27 (comment floorrightbigg)
|
||||
(CHARWD R 583)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 30 (comment ceilingleftbigg)
|
||||
(CHARWD R 583)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 31 (comment ceilingrightbigg)
|
||||
(CHARWD R 583)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 32 (comment braceleftbigg)
|
||||
(CHARWD R 750)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 33 (comment bracerightbigg)
|
||||
(CHARWD R 750)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 34 (comment angbracketleftbigg)
|
||||
(CHARWD R 750)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 35 (comment angbracketrightbigg)
|
||||
(CHARWD R 750)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 36 (comment slashbigg)
|
||||
(CHARWD R 1044)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 37 (comment backslashbigg)
|
||||
(CHARWD R 1044)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 40 (comment parenleftBigg)
|
||||
(CHARWD R 791)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2959)
|
||||
)
|
||||
(CHARACTER O 41 (comment parenrightBigg)
|
||||
(CHARWD R 791)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2959)
|
||||
)
|
||||
(CHARACTER O 42 (comment bracketleftBigg)
|
||||
(CHARWD R 583)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2959)
|
||||
)
|
||||
(CHARACTER O 43 (comment bracketrightBigg)
|
||||
(CHARWD R 583)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2959)
|
||||
)
|
||||
(CHARACTER O 44 (comment floorleftBigg)
|
||||
(CHARWD R 638)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2959)
|
||||
)
|
||||
(CHARACTER O 45 (comment floorrightBigg)
|
||||
(CHARWD R 638)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2959)
|
||||
)
|
||||
(CHARACTER O 46 (comment ceilingleftBigg)
|
||||
(CHARWD R 638)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2959)
|
||||
)
|
||||
(CHARACTER O 47 (comment ceilingrightBigg)
|
||||
(CHARWD R 638)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2959)
|
||||
)
|
||||
(CHARACTER O 50 (comment braceleftBigg)
|
||||
(CHARWD R 805)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2959)
|
||||
)
|
||||
(CHARACTER O 51 (comment bracerightBigg)
|
||||
(CHARWD R 805)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2959)
|
||||
)
|
||||
(CHARACTER O 52 (comment angbracketleftBigg)
|
||||
(CHARWD R 805)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2960)
|
||||
)
|
||||
(CHARACTER O 53 (comment angbracketrightBigg)
|
||||
(CHARWD R 805)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2960)
|
||||
)
|
||||
(CHARACTER O 54 (comment slashBigg)
|
||||
(CHARWD R 1277)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2959)
|
||||
)
|
||||
(CHARACTER O 55 (comment backslashBigg)
|
||||
(CHARWD R 1277)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2959)
|
||||
)
|
||||
(CHARACTER O 56 (comment slashBig)
|
||||
(CHARWD R 811)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1759)
|
||||
)
|
||||
(CHARACTER O 57 (comment backslashBig)
|
||||
(CHARWD R 811)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1759)
|
||||
)
|
||||
(CHARACTER C 0
|
||||
(CHARWD R 875)
|
||||
(CHARHT R 39)
|
||||
(CHARDP R 1770)
|
||||
)
|
||||
(CHARACTER C 1
|
||||
(CHARWD R 875)
|
||||
(CHARHT R 39)
|
||||
(CHARDP R 1770)
|
||||
)
|
||||
(CHARACTER C 2
|
||||
(CHARWD R 666)
|
||||
(CHARHT R 39)
|
||||
(CHARDP R 1760)
|
||||
)
|
||||
(CHARACTER C 3
|
||||
(CHARWD R 666)
|
||||
(CHARHT R 39)
|
||||
(CHARDP R 1760)
|
||||
)
|
||||
(CHARACTER C 4
|
||||
(CHARWD R 666)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1759)
|
||||
)
|
||||
(CHARACTER C 5
|
||||
(CHARWD R 666)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1759)
|
||||
)
|
||||
(CHARACTER C 6
|
||||
(CHARWD R 666)
|
||||
(CHARHT R 1)
|
||||
(CHARDP R 601)
|
||||
)
|
||||
(CHARACTER C 7
|
||||
(CHARWD R 666)
|
||||
(CHARHT R 1)
|
||||
(CHARDP R 601)
|
||||
)
|
||||
(CHARACTER C 8
|
||||
(CHARWD R 888)
|
||||
(CHARDP R 910)
|
||||
)
|
||||
(CHARACTER C 9
|
||||
(CHARWD R 888)
|
||||
(CHARDP R 910)
|
||||
)
|
||||
(CHARACTER O 72 (comment braceleftbt)
|
||||
(CHARWD R 888)
|
||||
(CHARHT R 10)
|
||||
(CHARDP R 899)
|
||||
)
|
||||
(CHARACTER O 73 (comment bracerightbt)
|
||||
(CHARWD R 888)
|
||||
(CHARHT R 10)
|
||||
(CHARDP R 899)
|
||||
)
|
||||
(CHARACTER O 74 (comment braceleftmid)
|
||||
(CHARWD R 888)
|
||||
(CHARHT R 10)
|
||||
(CHARDP R 1810)
|
||||
)
|
||||
(CHARACTER O 75 (comment bracerightmid)
|
||||
(CHARWD R 888)
|
||||
(CHARHT R 10)
|
||||
(CHARDP R 1810)
|
||||
)
|
||||
(CHARACTER O 76 (comment braceex)
|
||||
(CHARWD R 888)
|
||||
(CHARHT R 10)
|
||||
(CHARDP R 310)
|
||||
)
|
||||
(CHARACTER O 77 (comment arrowvertex)
|
||||
(CHARWD R 666)
|
||||
(CHARHT R 1)
|
||||
(CHARDP R 601)
|
||||
)
|
||||
(CHARACTER O 100 (comment parenleftbt)
|
||||
(CHARWD R 875)
|
||||
(CHARHT R 50)
|
||||
(CHARDP R 1759)
|
||||
)
|
||||
(CHARACTER C A
|
||||
(CHARWD R 875)
|
||||
(CHARHT R 50)
|
||||
(CHARDP R 1759)
|
||||
)
|
||||
(CHARACTER C B
|
||||
(CHARWD R 875)
|
||||
(CHARHT R 10)
|
||||
(CHARDP R 610)
|
||||
)
|
||||
(CHARACTER C C
|
||||
(CHARWD R 875)
|
||||
(CHARHT R 10)
|
||||
(CHARDP R 610)
|
||||
)
|
||||
(CHARACTER C D
|
||||
(CHARWD R 611)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1759)
|
||||
)
|
||||
(CHARACTER C E
|
||||
(CHARWD R 611)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1759)
|
||||
)
|
||||
(CHARACTER C F
|
||||
(CHARWD R 833)
|
||||
(CHARDP R 1000)
|
||||
)
|
||||
(CHARACTER C G
|
||||
(CHARWD R 1111)
|
||||
(CHARDP R 1400)
|
||||
)
|
||||
(CHARACTER C H
|
||||
(CHARWD R 472)
|
||||
(CHARDP R 1111)
|
||||
(CHARIC R 137)
|
||||
)
|
||||
(CHARACTER C I
|
||||
(CHARWD R 555)
|
||||
(CHARDP R 2222)
|
||||
(CHARIC R 388)
|
||||
)
|
||||
(CHARACTER C J
|
||||
(CHARWD R 1111)
|
||||
(CHARDP R 1000)
|
||||
)
|
||||
(CHARACTER C K
|
||||
(CHARWD R 1511)
|
||||
(CHARDP R 1400)
|
||||
)
|
||||
(CHARACTER C L
|
||||
(CHARWD R 1111)
|
||||
(CHARDP R 1000)
|
||||
)
|
||||
(CHARACTER C M
|
||||
(CHARWD R 1511)
|
||||
(CHARDP R 1400)
|
||||
)
|
||||
(CHARACTER C N
|
||||
(CHARWD R 1111)
|
||||
(CHARDP R 1000)
|
||||
)
|
||||
(CHARACTER C O
|
||||
(CHARWD R 1511)
|
||||
(CHARDP R 1400)
|
||||
)
|
||||
(CHARACTER C P
|
||||
(CHARWD R 1055)
|
||||
(CHARDP R 1000)
|
||||
)
|
||||
(CHARACTER C Q
|
||||
(CHARWD R 944)
|
||||
(CHARDP R 1000)
|
||||
)
|
||||
(CHARACTER C R
|
||||
(CHARWD R 472)
|
||||
(CHARDP R 1111)
|
||||
(CHARIC R 137)
|
||||
)
|
||||
(CHARACTER C S
|
||||
(CHARWD R 833)
|
||||
(CHARDP R 1000)
|
||||
)
|
||||
(CHARACTER C T
|
||||
(CHARWD R 833)
|
||||
(CHARDP R 1000)
|
||||
)
|
||||
(CHARACTER C U
|
||||
(CHARWD R 833)
|
||||
(CHARDP R 1000)
|
||||
)
|
||||
(CHARACTER C V
|
||||
(CHARWD R 833)
|
||||
(CHARDP R 1000)
|
||||
)
|
||||
(CHARACTER C W
|
||||
(CHARWD R 833)
|
||||
(CHARDP R 1000)
|
||||
)
|
||||
(CHARACTER C X
|
||||
(CHARWD R 1444)
|
||||
(CHARDP R 1400)
|
||||
)
|
||||
(CHARACTER C Y
|
||||
(CHARWD R 1277)
|
||||
(CHARDP R 1400)
|
||||
)
|
||||
(CHARACTER C Z
|
||||
(CHARWD R 555)
|
||||
(CHARDP R 2222)
|
||||
(CHARIC R 388)
|
||||
)
|
||||
(CHARACTER O 133 (comment uniondisplay)
|
||||
(CHARWD R 1111)
|
||||
(CHARDP R 1400)
|
||||
)
|
||||
(CHARACTER O 134 (comment intersectiondisplay)
|
||||
(CHARWD R 1111)
|
||||
(CHARDP R 1400)
|
||||
)
|
||||
(CHARACTER O 135 (comment unionmultidisplay)
|
||||
(CHARWD R 1111)
|
||||
(CHARDP R 1400)
|
||||
)
|
||||
(CHARACTER O 136 (comment logicalanddisplay)
|
||||
(CHARWD R 1111)
|
||||
(CHARDP R 1400)
|
||||
)
|
||||
(CHARACTER O 137 (comment logicalordisplay)
|
||||
(CHARWD R 1111)
|
||||
(CHARDP R 1400)
|
||||
)
|
||||
(CHARACTER O 140 (comment coproducttext)
|
||||
(CHARWD R 944)
|
||||
(CHARDP R 1000)
|
||||
)
|
||||
(CHARACTER C a
|
||||
(CHARWD R 1277)
|
||||
(CHARDP R 1400)
|
||||
)
|
||||
(CHARACTER C b
|
||||
(CHARWD R 555)
|
||||
(CHARHT R 744)
|
||||
(CHARIC R 6)
|
||||
)
|
||||
(CHARACTER C c
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 772)
|
||||
(CHARIC R 3)
|
||||
)
|
||||
(CHARACTER C d
|
||||
(CHARWD R 1444)
|
||||
(CHARHT R 772)
|
||||
(CHARIC R 2)
|
||||
)
|
||||
(CHARACTER C e
|
||||
(CHARWD R 555)
|
||||
(CHARHT R 722)
|
||||
)
|
||||
(CHARACTER C f
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 750)
|
||||
)
|
||||
(CHARACTER C g
|
||||
(CHARWD R 1444)
|
||||
(CHARHT R 750)
|
||||
)
|
||||
(CHARACTER C h
|
||||
(CHARWD R 472)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1759)
|
||||
)
|
||||
(CHARACTER C i
|
||||
(CHARWD R 472)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1759)
|
||||
)
|
||||
(CHARACTER C j
|
||||
(CHARWD R 527)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1759)
|
||||
)
|
||||
(CHARACTER C k
|
||||
(CHARWD R 527)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1759)
|
||||
)
|
||||
(CHARACTER C l
|
||||
(CHARWD R 527)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1759)
|
||||
)
|
||||
(CHARACTER C m
|
||||
(CHARWD R 527)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1759)
|
||||
)
|
||||
(CHARACTER C n
|
||||
(CHARWD R 666)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1759)
|
||||
)
|
||||
(CHARACTER C o
|
||||
(CHARWD R 666)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1759)
|
||||
)
|
||||
(CHARACTER C p
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1160)
|
||||
(CHARIC R 20)
|
||||
)
|
||||
(CHARACTER C q
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1760)
|
||||
(CHARIC R 20)
|
||||
)
|
||||
(CHARACTER C r
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2360)
|
||||
(CHARIC R 20)
|
||||
)
|
||||
(CHARACTER C s
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2960)
|
||||
(CHARIC R 20)
|
||||
)
|
||||
(CHARACTER C t
|
||||
(CHARWD R 1055)
|
||||
(CHARHT R 20)
|
||||
(CHARDP R 1800)
|
||||
)
|
||||
(CHARACTER C u
|
||||
(CHARWD R 1055)
|
||||
(CHARHT R 20)
|
||||
(CHARDP R 620)
|
||||
)
|
||||
(CHARACTER C v
|
||||
(CHARWD R 1055)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 580)
|
||||
(CHARIC R 21)
|
||||
)
|
||||
(CHARACTER C w
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 1)
|
||||
(CHARDP R 601)
|
||||
)
|
||||
(CHARACTER C x
|
||||
(CHARWD R 666)
|
||||
(CHARDP R 600)
|
||||
)
|
||||
(CHARACTER C y
|
||||
(CHARWD R 666)
|
||||
(CHARDP R 600)
|
||||
)
|
||||
(CHARACTER C z
|
||||
(CHARWD R 450)
|
||||
(CHARHT R 120)
|
||||
(CHARDP R 214)
|
||||
(CHARIC R 10)
|
||||
)
|
||||
(CHARACTER O 173 (comment bracehtipdownright)
|
||||
(CHARWD R 450)
|
||||
(CHARHT R 120)
|
||||
(CHARDP R 214)
|
||||
(CHARIC R 24)
|
||||
)
|
||||
(CHARACTER O 174 (comment bracehtipupleft)
|
||||
(CHARWD R 450)
|
||||
(CHARHT R 334)
|
||||
(CHARIC R 10)
|
||||
)
|
||||
(CHARACTER O 175 (comment bracehtipupright)
|
||||
(CHARWD R 450)
|
||||
(CHARHT R 334)
|
||||
(CHARIC R 24)
|
||||
)
|
||||
(CHARACTER O 176 (comment arrowdbltp)
|
||||
(CHARWD R 777)
|
||||
(CHARDP R 600)
|
||||
)
|
||||
(CHARACTER O 177 (comment arrowdblbt)
|
||||
(CHARWD R 777)
|
||||
(CHARDP R 599)
|
||||
)
|
||||
(CHARACTER O 200 (comment parenleftBigg)
|
||||
(CHARWD R 791)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2959)
|
||||
)
|
||||
(CHARACTER O 237 (comment radical)
|
||||
(CHARWD R 833)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 960)
|
||||
(CHARIC R 20)
|
||||
)
|
||||
(CHARACTER O 240 (comment space)
|
||||
(CHARWD R 333)
|
||||
)
|
||||
(CHARACTER O 241 (comment parenleftbig)
|
||||
(CHARWD R 458)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1159)
|
||||
)
|
||||
(CHARACTER O 242 (comment parenrightbig)
|
||||
(CHARWD R 458)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1159)
|
||||
)
|
||||
(CHARACTER O 243 (comment bracketleftbig)
|
||||
(CHARWD R 416)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1159)
|
||||
)
|
||||
(CHARACTER O 244 (comment bracketrightbig)
|
||||
(CHARWD R 416)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1159)
|
||||
)
|
||||
(CHARACTER O 245 (comment floorleftbig)
|
||||
(CHARWD R 472)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1159)
|
||||
)
|
||||
(CHARACTER O 246 (comment floorrightbig)
|
||||
(CHARWD R 472)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1159)
|
||||
)
|
||||
(CHARACTER O 247 (comment ceilingleftbig)
|
||||
(CHARWD R 472)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1159)
|
||||
)
|
||||
(CHARACTER O 250 (comment ceilingrightbig)
|
||||
(CHARWD R 472)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1159)
|
||||
)
|
||||
(CHARACTER O 251 (comment braceleftbig)
|
||||
(CHARWD R 583)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1159)
|
||||
)
|
||||
(CHARACTER O 252 (comment bracerightbig)
|
||||
(CHARWD R 583)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1159)
|
||||
)
|
||||
(CHARACTER O 255 (comment angbracketleftbig)
|
||||
(CHARWD R 472)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1160)
|
||||
)
|
||||
(CHARACTER O 256 (comment angbracketrightbig)
|
||||
(CHARWD R 472)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1160)
|
||||
)
|
||||
(CHARACTER O 257 (comment vextendsingle)
|
||||
(CHARWD R 333)
|
||||
(CHARHT R 21)
|
||||
(CHARDP R 621)
|
||||
)
|
||||
(CHARACTER O 260 (comment vextenddouble)
|
||||
(CHARWD R 555)
|
||||
(CHARHT R 21)
|
||||
(CHARDP R 621)
|
||||
)
|
||||
(CHARACTER O 261 (comment slashbig)
|
||||
(CHARWD R 577)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1159)
|
||||
)
|
||||
(CHARACTER O 262 (comment backslashbig)
|
||||
(CHARWD R 577)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1159)
|
||||
)
|
||||
(CHARACTER O 263 (comment parenleftBig)
|
||||
(CHARWD R 597)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1759)
|
||||
)
|
||||
(CHARACTER O 264 (comment parenrightBig)
|
||||
(CHARWD R 597)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 1759)
|
||||
)
|
||||
(CHARACTER O 265 (comment parenleftbigg)
|
||||
(CHARWD R 736)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 266 (comment parenrightbigg)
|
||||
(CHARWD R 736)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 267 (comment bracketleftbigg)
|
||||
(CHARWD R 527)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 270 (comment bracketrightbigg)
|
||||
(CHARWD R 527)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 271 (comment floorleftbigg)
|
||||
(CHARWD R 583)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 272 (comment floorrightbigg)
|
||||
(CHARWD R 583)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 273 (comment ceilingleftbigg)
|
||||
(CHARWD R 583)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 274 (comment ceilingrightbigg)
|
||||
(CHARWD R 583)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 275 (comment braceleftbigg)
|
||||
(CHARWD R 750)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 276 (comment bracerightbigg)
|
||||
(CHARWD R 750)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 277 (comment angbracketleftbigg)
|
||||
(CHARWD R 750)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 300 (comment angbracketrightbigg)
|
||||
(CHARWD R 750)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 301 (comment slashbigg)
|
||||
(CHARWD R 1044)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 302 (comment backslashbigg)
|
||||
(CHARWD R 1044)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2359)
|
||||
)
|
||||
(CHARACTER O 303 (comment parenleftBigg)
|
||||
(CHARWD R 791)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 2959)
|
||||
)
|
||||
(CHARACTER O 304 (comment arrowdblbt)
|
||||
(CHARWD R 777)
|
||||
(CHARDP R 599)
|
||||
)
|
||||
(CHARACTER O 320 (comment Gamma)
|
||||
(CHARWD R 625)
|
||||
(CHARHT R 680)
|
||||
)
|
||||
(CHARACTER O 321 (comment Delta)
|
||||
(CHARWD R 833)
|
||||
(CHARHT R 716)
|
||||
)
|
||||
(CHARACTER O 322 (comment Theta)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 705)
|
||||
(CHARDP R 22)
|
||||
)
|
||||
(CHARACTER O 323 (comment Lambda)
|
||||
(CHARWD R 694)
|
||||
(CHARHT R 716)
|
||||
)
|
||||
(CHARACTER O 324 (comment Xi)
|
||||
(CHARWD R 666)
|
||||
(CHARHT R 677)
|
||||
)
|
||||
(CHARACTER O 325 (comment Pi)
|
||||
(CHARWD R 750)
|
||||
(CHARHT R 680)
|
||||
)
|
||||
(CHARACTER O 326 (comment Sigma)
|
||||
(CHARWD R 722)
|
||||
(CHARHT R 683)
|
||||
)
|
||||
(CHARACTER O 327 (comment Upsilon)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 705)
|
||||
)
|
||||
(CHARACTER O 330 (comment Phi)
|
||||
(CHARWD R 722)
|
||||
(CHARHT R 683)
|
||||
)
|
||||
(CHARACTER O 331 (comment Psi)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 683)
|
||||
)
|
||||
(CHARACTER O 332 (comment Omega)
|
||||
(CHARWD R 722)
|
||||
(CHARHT R 705)
|
||||
)
|
1286
metrics/cmmi10.pl
1286
metrics/cmmi10.pl
File diff suppressed because it is too large
Load Diff
1082
metrics/cmr10.pl
1082
metrics/cmr10.pl
File diff suppressed because it is too large
Load Diff
|
@ -1,894 +0,0 @@
|
|||
(FAMILY cmsy10)
|
||||
(CODINGSCHEME FONTSPECIFIC)
|
||||
(DESIGNSIZE R 10.0)
|
||||
(DESIGNUNITS R 1000)
|
||||
(COMMENT DESIGNSIZE (1 em) IS IN POINTS)
|
||||
(COMMENT OTHER DIMENSIONS ARE MULTIPLES OF DESIGNSIZE/1000)
|
||||
(BOUNDARYCHAR O 201)
|
||||
(FONTDIMEN
|
||||
(SLANT R 0.250070)
|
||||
(SPACE D 333)
|
||||
(STRETCH D 166)
|
||||
(SHRINK D 111)
|
||||
(XHEIGHT D 400)
|
||||
(QUAD D 1000)
|
||||
(EXTRASPACE D 111)
|
||||
)
|
||||
(LIGTABLE
|
||||
(LABEL C A)
|
||||
(KRN C 0 R 194)
|
||||
(STOP)
|
||||
(LABEL C B)
|
||||
(KRN C 0 R 138)
|
||||
(STOP)
|
||||
(LABEL C C)
|
||||
(KRN C 0 R 138)
|
||||
(STOP)
|
||||
(LABEL C D)
|
||||
(KRN C 0 R 83)
|
||||
(STOP)
|
||||
(LABEL C E)
|
||||
(KRN C 0 R 111)
|
||||
(STOP)
|
||||
(LABEL C F)
|
||||
(KRN C 0 R 111)
|
||||
(STOP)
|
||||
(LABEL C G)
|
||||
(KRN C 0 R 111)
|
||||
(STOP)
|
||||
(LABEL C H)
|
||||
(KRN C 0 R 111)
|
||||
(STOP)
|
||||
(LABEL C I)
|
||||
(KRN C 0 R 27)
|
||||
(STOP)
|
||||
(LABEL C J)
|
||||
(KRN C 0 R 166)
|
||||
(STOP)
|
||||
(LABEL C K)
|
||||
(KRN C 0 R 55)
|
||||
(STOP)
|
||||
(LABEL C L)
|
||||
(KRN C 0 R 138)
|
||||
(STOP)
|
||||
(LABEL C M)
|
||||
(KRN C 0 R 138)
|
||||
(STOP)
|
||||
(LABEL C N)
|
||||
(KRN C 0 R 83)
|
||||
(STOP)
|
||||
(LABEL C O)
|
||||
(KRN C 0 R 111)
|
||||
(STOP)
|
||||
(LABEL C P)
|
||||
(KRN C 0 R 83)
|
||||
(STOP)
|
||||
(LABEL C Q)
|
||||
(KRN C 0 R 111)
|
||||
(STOP)
|
||||
(LABEL C R)
|
||||
(KRN C 0 R 83)
|
||||
(STOP)
|
||||
(LABEL C S)
|
||||
(KRN C 0 R 138)
|
||||
(STOP)
|
||||
(LABEL C T)
|
||||
(KRN C 0 R 27)
|
||||
(STOP)
|
||||
(LABEL C U)
|
||||
(KRN C 0 R 83)
|
||||
(STOP)
|
||||
(LABEL C V)
|
||||
(KRN C 0 R 27)
|
||||
(STOP)
|
||||
(LABEL C W)
|
||||
(KRN C 0 R 83)
|
||||
(STOP)
|
||||
(LABEL C X)
|
||||
(KRN C 0 R 138)
|
||||
(STOP)
|
||||
(LABEL C Y)
|
||||
(KRN C 0 R 83)
|
||||
(STOP)
|
||||
(LABEL C Z)
|
||||
(KRN C 0 R 138)
|
||||
(STOP)
|
||||
)
|
||||
(CHARACTER O 0 (comment minus)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 270)
|
||||
)
|
||||
(CHARACTER O 1 (comment periodcentered)
|
||||
(CHARWD R 277)
|
||||
(CHARHT R 303)
|
||||
)
|
||||
(CHARACTER O 2 (comment multiply)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 491)
|
||||
)
|
||||
(CHARACTER O 3 (comment asteriskmath)
|
||||
(CHARWD R 500)
|
||||
(CHARHT R 465)
|
||||
)
|
||||
(CHARACTER O 4 (comment divide)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 529)
|
||||
(CHARDP R 29)
|
||||
)
|
||||
(CHARACTER O 5 (comment diamondmath)
|
||||
(CHARWD R 500)
|
||||
(CHARHT R 488)
|
||||
)
|
||||
(CHARACTER O 6 (comment plusminus)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 666)
|
||||
)
|
||||
(CHARACTER O 7 (comment minusplus)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 500)
|
||||
(CHARDP R 166)
|
||||
)
|
||||
(CHARACTER O 10 (comment circleplus)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 583)
|
||||
(CHARDP R 83)
|
||||
)
|
||||
(CHARACTER O 11 (comment circleminus)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 583)
|
||||
(CHARDP R 83)
|
||||
)
|
||||
(CHARACTER O 12 (comment circlemultiply)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 583)
|
||||
(CHARDP R 83)
|
||||
)
|
||||
(CHARACTER O 13 (comment circledivide)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 583)
|
||||
(CHARDP R 83)
|
||||
)
|
||||
(CHARACTER O 14 (comment circledot)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 583)
|
||||
(CHARDP R 83)
|
||||
)
|
||||
(CHARACTER O 15 (comment circlecopyrt)
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 716)
|
||||
(CHARDP R 216)
|
||||
)
|
||||
(CHARACTER O 16 (comment openbullet)
|
||||
(CHARWD R 500)
|
||||
(CHARHT R 444)
|
||||
)
|
||||
(CHARACTER O 17 (comment bullet)
|
||||
(CHARWD R 500)
|
||||
(CHARHT R 444)
|
||||
)
|
||||
(CHARACTER O 20 (comment equivasymptotic)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 484)
|
||||
)
|
||||
(CHARACTER O 21 (comment equivalence)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 464)
|
||||
)
|
||||
(CHARACTER O 22 (comment reflexsubset)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 636)
|
||||
(CHARDP R 137)
|
||||
)
|
||||
(CHARACTER O 23 (comment reflexsuperset)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 636)
|
||||
(CHARDP R 137)
|
||||
)
|
||||
(CHARACTER O 24 (comment lessequal)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 636)
|
||||
(CHARDP R 137)
|
||||
)
|
||||
(CHARACTER O 25 (comment greaterequal)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 636)
|
||||
(CHARDP R 137)
|
||||
)
|
||||
(CHARACTER O 26 (comment precedesequal)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 636)
|
||||
(CHARDP R 137)
|
||||
)
|
||||
(CHARACTER O 27 (comment followsequal)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 636)
|
||||
(CHARDP R 137)
|
||||
)
|
||||
(CHARACTER O 30 (comment similar)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 367)
|
||||
)
|
||||
(CHARACTER O 31 (comment approxequal)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 483)
|
||||
)
|
||||
(CHARACTER O 32 (comment propersubset)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 540)
|
||||
(CHARDP R 40)
|
||||
)
|
||||
(CHARACTER O 33 (comment propersuperset)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 540)
|
||||
(CHARDP R 40)
|
||||
)
|
||||
(CHARACTER O 34 (comment lessmuch)
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 566)
|
||||
(CHARDP R 66)
|
||||
)
|
||||
(CHARACTER O 35 (comment greatermuch)
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 566)
|
||||
(CHARDP R 66)
|
||||
)
|
||||
(CHARACTER O 36 (comment precedes)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 539)
|
||||
(CHARDP R 40)
|
||||
)
|
||||
(CHARACTER O 37 (comment follows)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 539)
|
||||
(CHARDP R 40)
|
||||
)
|
||||
(CHARACTER O 40 (comment arrowleft)
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 511)
|
||||
(CHARDP R 11)
|
||||
)
|
||||
(CHARACTER O 41 (comment arrowright)
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 511)
|
||||
(CHARDP R 11)
|
||||
)
|
||||
(CHARACTER O 42 (comment arrowup)
|
||||
(CHARWD R 500)
|
||||
(CHARHT R 693)
|
||||
(CHARDP R 194)
|
||||
)
|
||||
(CHARACTER O 43 (comment arrowdown)
|
||||
(CHARWD R 500)
|
||||
(CHARHT R 694)
|
||||
(CHARDP R 193)
|
||||
)
|
||||
(CHARACTER O 44 (comment arrowboth)
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 511)
|
||||
(CHARDP R 11)
|
||||
)
|
||||
(CHARACTER O 45 (comment arrownortheast)
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 719)
|
||||
(CHARDP R 195)
|
||||
)
|
||||
(CHARACTER O 46 (comment arrowsoutheast)
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 695)
|
||||
(CHARDP R 219)
|
||||
)
|
||||
(CHARACTER O 47 (comment similarequal)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 464)
|
||||
)
|
||||
(CHARACTER O 50 (comment arrowdblleft)
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 525)
|
||||
(CHARDP R 25)
|
||||
)
|
||||
(CHARACTER O 51 (comment arrowdblright)
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 525)
|
||||
(CHARDP R 25)
|
||||
)
|
||||
(CHARACTER O 52 (comment arrowdblup)
|
||||
(CHARWD R 611)
|
||||
(CHARHT R 693)
|
||||
(CHARDP R 194)
|
||||
)
|
||||
(CHARACTER O 53 (comment arrowdbldown)
|
||||
(CHARWD R 611)
|
||||
(CHARHT R 694)
|
||||
(CHARDP R 193)
|
||||
)
|
||||
(CHARACTER O 54 (comment arrowdblboth)
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 525)
|
||||
(CHARDP R 25)
|
||||
)
|
||||
(CHARACTER O 55 (comment arrownorthwest)
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 719)
|
||||
(CHARDP R 195)
|
||||
)
|
||||
(CHARACTER O 56 (comment arrowsouthwest)
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 695)
|
||||
(CHARDP R 219)
|
||||
)
|
||||
(CHARACTER O 57 (comment proportional)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 442)
|
||||
(CHARDP R 11)
|
||||
)
|
||||
(CHARACTER C 0
|
||||
(CHARWD R 275)
|
||||
(CHARHT R 559)
|
||||
)
|
||||
(CHARACTER C 1
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 442)
|
||||
(CHARDP R 11)
|
||||
)
|
||||
(CHARACTER C 2
|
||||
(CHARWD R 666)
|
||||
(CHARHT R 540)
|
||||
(CHARDP R 40)
|
||||
)
|
||||
(CHARACTER C 3
|
||||
(CHARWD R 666)
|
||||
(CHARHT R 540)
|
||||
(CHARDP R 40)
|
||||
)
|
||||
(CHARACTER C 4
|
||||
(CHARWD R 888)
|
||||
(CHARHT R 716)
|
||||
)
|
||||
(CHARACTER C 5
|
||||
(CHARWD R 888)
|
||||
(CHARHT R 500)
|
||||
(CHARDP R 216)
|
||||
)
|
||||
(CHARACTER C 6
|
||||
(CHARWD R 0)
|
||||
(CHARHT R 716)
|
||||
(CHARDP R 216)
|
||||
(CHARIC R 638)
|
||||
)
|
||||
(CHARACTER C 7
|
||||
(CHARWD R 0)
|
||||
(CHARHT R 436)
|
||||
(CHARIC R 123)
|
||||
)
|
||||
(CHARACTER C 8
|
||||
(CHARWD R 555)
|
||||
(CHARHT R 694)
|
||||
(CHARDP R 22)
|
||||
(CHARIC R 1)
|
||||
)
|
||||
(CHARACTER C 9
|
||||
(CHARWD R 555)
|
||||
(CHARHT R 694)
|
||||
)
|
||||
(CHARACTER O 72 (comment logicalnot)
|
||||
(CHARWD R 666)
|
||||
(CHARHT R 356)
|
||||
)
|
||||
(CHARACTER O 73 (comment emptyset)
|
||||
(CHARWD R 500)
|
||||
(CHARHT R 772)
|
||||
(CHARDP R 78)
|
||||
)
|
||||
(CHARACTER O 74 (comment Rfractur)
|
||||
(CHARWD R 722)
|
||||
(CHARHT R 716)
|
||||
(CHARDP R 22)
|
||||
)
|
||||
(CHARACTER O 75 (comment Ifractur)
|
||||
(CHARWD R 722)
|
||||
(CHARHT R 705)
|
||||
(CHARDP R 11)
|
||||
)
|
||||
(CHARACTER O 76 (comment latticetop)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 668)
|
||||
)
|
||||
(CHARACTER O 77 (comment perpendicular)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 668)
|
||||
)
|
||||
(CHARACTER O 100 (comment aleph)
|
||||
(CHARWD R 611)
|
||||
(CHARHT R 693)
|
||||
)
|
||||
(CHARACTER C A
|
||||
(CHARWD R 798)
|
||||
(CHARHT R 722)
|
||||
(CHARDP R 50)
|
||||
)
|
||||
(CHARACTER C B
|
||||
(CHARWD R 656)
|
||||
(CHARHT R 706)
|
||||
(CHARDP R 22)
|
||||
(CHARIC R 9)
|
||||
)
|
||||
(CHARACTER C C
|
||||
(CHARWD R 526)
|
||||
(CHARHT R 705)
|
||||
(CHARDP R 24)
|
||||
(CHARIC R 8)
|
||||
)
|
||||
(CHARACTER C D
|
||||
(CHARWD R 771)
|
||||
(CHARHT R 683)
|
||||
)
|
||||
(CHARACTER C E
|
||||
(CHARWD R 527)
|
||||
(CHARHT R 705)
|
||||
(CHARDP R 22)
|
||||
(CHARIC R 38)
|
||||
)
|
||||
(CHARACTER C F
|
||||
(CHARWD R 719)
|
||||
(CHARHT R 685)
|
||||
(CHARDP R 32)
|
||||
(CHARIC R 111)
|
||||
)
|
||||
(CHARACTER C G
|
||||
(CHARWD R 594)
|
||||
(CHARHT R 705)
|
||||
(CHARDP R 119)
|
||||
(CHARIC R 7)
|
||||
)
|
||||
(CHARACTER C H
|
||||
(CHARWD R 844)
|
||||
(CHARHT R 683)
|
||||
(CHARDP R 49)
|
||||
)
|
||||
(CHARACTER C I
|
||||
(CHARWD R 544)
|
||||
(CHARHT R 683)
|
||||
(CHARIC R 91)
|
||||
)
|
||||
(CHARACTER C J
|
||||
(CHARWD R 677)
|
||||
(CHARHT R 683)
|
||||
(CHARDP R 119)
|
||||
(CHARIC R 163)
|
||||
)
|
||||
(CHARACTER C K
|
||||
(CHARWD R 761)
|
||||
(CHARHT R 705)
|
||||
(CHARDP R 22)
|
||||
)
|
||||
(CHARACTER C L
|
||||
(CHARWD R 689)
|
||||
(CHARHT R 705)
|
||||
(CHARDP R 22)
|
||||
)
|
||||
(CHARACTER C M
|
||||
(CHARWD R 1200)
|
||||
(CHARHT R 705)
|
||||
(CHARDP R 50)
|
||||
)
|
||||
(CHARACTER C N
|
||||
(CHARWD R 820)
|
||||
(CHARHT R 775)
|
||||
(CHARDP R 50)
|
||||
(CHARIC R 158)
|
||||
)
|
||||
(CHARACTER C O
|
||||
(CHARWD R 796)
|
||||
(CHARHT R 705)
|
||||
(CHARDP R 22)
|
||||
)
|
||||
(CHARACTER C P
|
||||
(CHARWD R 695)
|
||||
(CHARHT R 683)
|
||||
(CHARDP R 50)
|
||||
(CHARIC R 38)
|
||||
)
|
||||
(CHARACTER C Q
|
||||
(CHARWD R 816)
|
||||
(CHARHT R 705)
|
||||
(CHARDP R 124)
|
||||
)
|
||||
(CHARACTER C R
|
||||
(CHARWD R 847)
|
||||
(CHARHT R 683)
|
||||
(CHARDP R 22)
|
||||
)
|
||||
(CHARACTER C S
|
||||
(CHARWD R 605)
|
||||
(CHARHT R 705)
|
||||
(CHARDP R 22)
|
||||
(CHARIC R 37)
|
||||
)
|
||||
(CHARACTER C T
|
||||
(CHARWD R 544)
|
||||
(CHARHT R 717)
|
||||
(CHARDP R 68)
|
||||
(CHARIC R 290)
|
||||
)
|
||||
(CHARACTER C U
|
||||
(CHARWD R 625)
|
||||
(CHARHT R 683)
|
||||
(CHARDP R 28)
|
||||
(CHARIC R 63)
|
||||
)
|
||||
(CHARACTER C V
|
||||
(CHARWD R 612)
|
||||
(CHARHT R 683)
|
||||
(CHARDP R 45)
|
||||
(CHARIC R 48)
|
||||
)
|
||||
(CHARACTER C W
|
||||
(CHARWD R 987)
|
||||
(CHARHT R 683)
|
||||
(CHARDP R 45)
|
||||
(CHARIC R 49)
|
||||
)
|
||||
(CHARACTER C X
|
||||
(CHARWD R 713)
|
||||
(CHARHT R 683)
|
||||
(CHARIC R 95)
|
||||
)
|
||||
(CHARACTER C Y
|
||||
(CHARWD R 668)
|
||||
(CHARHT R 683)
|
||||
(CHARDP R 135)
|
||||
(CHARIC R 49)
|
||||
)
|
||||
(CHARACTER C Z
|
||||
(CHARWD R 724)
|
||||
(CHARHT R 683)
|
||||
(CHARIC R 43)
|
||||
)
|
||||
(CHARACTER O 133 (comment union)
|
||||
(CHARWD R 666)
|
||||
(CHARHT R 598)
|
||||
(CHARDP R 22)
|
||||
)
|
||||
(CHARACTER O 134 (comment intersection)
|
||||
(CHARWD R 666)
|
||||
(CHARHT R 598)
|
||||
(CHARDP R 22)
|
||||
)
|
||||
(CHARACTER O 135 (comment unionmulti)
|
||||
(CHARWD R 666)
|
||||
(CHARHT R 598)
|
||||
(CHARDP R 22)
|
||||
)
|
||||
(CHARACTER O 136 (comment logicaland)
|
||||
(CHARWD R 666)
|
||||
(CHARHT R 598)
|
||||
(CHARDP R 22)
|
||||
)
|
||||
(CHARACTER O 137 (comment logicalor)
|
||||
(CHARWD R 666)
|
||||
(CHARHT R 598)
|
||||
(CHARDP R 22)
|
||||
)
|
||||
(CHARACTER O 140 (comment turnstileleft)
|
||||
(CHARWD R 611)
|
||||
(CHARHT R 694)
|
||||
)
|
||||
(CHARACTER C a
|
||||
(CHARWD R 611)
|
||||
(CHARHT R 694)
|
||||
)
|
||||
(CHARACTER C b
|
||||
(CHARWD R 444)
|
||||
(CHARHT R 750)
|
||||
(CHARDP R 250)
|
||||
)
|
||||
(CHARACTER C c
|
||||
(CHARWD R 444)
|
||||
(CHARHT R 750)
|
||||
(CHARDP R 250)
|
||||
)
|
||||
(CHARACTER C d
|
||||
(CHARWD R 444)
|
||||
(CHARHT R 750)
|
||||
(CHARDP R 250)
|
||||
)
|
||||
(CHARACTER C e
|
||||
(CHARWD R 444)
|
||||
(CHARHT R 750)
|
||||
(CHARDP R 250)
|
||||
)
|
||||
(CHARACTER C f
|
||||
(CHARWD R 500)
|
||||
(CHARHT R 750)
|
||||
(CHARDP R 250)
|
||||
)
|
||||
(CHARACTER C g
|
||||
(CHARWD R 500)
|
||||
(CHARHT R 750)
|
||||
(CHARDP R 250)
|
||||
)
|
||||
(CHARACTER C h
|
||||
(CHARWD R 388)
|
||||
(CHARHT R 750)
|
||||
(CHARDP R 250)
|
||||
)
|
||||
(CHARACTER C i
|
||||
(CHARWD R 388)
|
||||
(CHARHT R 750)
|
||||
(CHARDP R 250)
|
||||
)
|
||||
(CHARACTER C j
|
||||
(CHARWD R 277)
|
||||
(CHARHT R 750)
|
||||
(CHARDP R 250)
|
||||
)
|
||||
(CHARACTER C k
|
||||
(CHARWD R 500)
|
||||
(CHARHT R 750)
|
||||
(CHARDP R 250)
|
||||
)
|
||||
(CHARACTER C l
|
||||
(CHARWD R 500)
|
||||
(CHARHT R 771)
|
||||
(CHARDP R 271)
|
||||
)
|
||||
(CHARACTER C m
|
||||
(CHARWD R 611)
|
||||
(CHARHT R 771)
|
||||
(CHARDP R 271)
|
||||
)
|
||||
(CHARACTER C n
|
||||
(CHARWD R 500)
|
||||
(CHARHT R 750)
|
||||
(CHARDP R 250)
|
||||
)
|
||||
(CHARACTER C o
|
||||
(CHARWD R 277)
|
||||
(CHARHT R 583)
|
||||
(CHARDP R 83)
|
||||
)
|
||||
(CHARACTER C p
|
||||
(CHARWD R 833)
|
||||
(CHARHT R 40)
|
||||
(CHARDP R 960)
|
||||
(CHARIC R 20)
|
||||
)
|
||||
(CHARACTER C q
|
||||
(CHARWD R 750)
|
||||
(CHARHT R 683)
|
||||
)
|
||||
(CHARACTER C r
|
||||
(CHARWD R 833)
|
||||
(CHARHT R 683)
|
||||
(CHARDP R 33)
|
||||
)
|
||||
(CHARACTER C s
|
||||
(CHARWD R 416)
|
||||
(CHARHT R 716)
|
||||
(CHARDP R 216)
|
||||
(CHARIC R 56)
|
||||
)
|
||||
(CHARACTER C t
|
||||
(CHARWD R 666)
|
||||
(CHARHT R 598)
|
||||
)
|
||||
(CHARACTER C u
|
||||
(CHARWD R 666)
|
||||
(CHARHT R 598)
|
||||
)
|
||||
(CHARACTER C v
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 636)
|
||||
(CHARDP R 137)
|
||||
)
|
||||
(CHARACTER C w
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 636)
|
||||
(CHARDP R 137)
|
||||
)
|
||||
(CHARACTER C x
|
||||
(CHARWD R 444)
|
||||
(CHARHT R 705)
|
||||
(CHARDP R 205)
|
||||
)
|
||||
(CHARACTER C y
|
||||
(CHARWD R 444)
|
||||
(CHARHT R 705)
|
||||
(CHARDP R 216)
|
||||
)
|
||||
(CHARACTER C z
|
||||
(CHARWD R 444)
|
||||
(CHARHT R 705)
|
||||
(CHARDP R 205)
|
||||
)
|
||||
(CHARACTER O 173 (comment paragraph)
|
||||
(CHARWD R 611)
|
||||
(CHARHT R 694)
|
||||
(CHARDP R 194)
|
||||
)
|
||||
(CHARACTER O 174 (comment club)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 727)
|
||||
(CHARDP R 130)
|
||||
)
|
||||
(CHARACTER O 175 (comment diamond)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 727)
|
||||
(CHARDP R 163)
|
||||
)
|
||||
(CHARACTER O 176 (comment heart)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 716)
|
||||
(CHARDP R 33)
|
||||
)
|
||||
(CHARACTER O 177 (comment spade)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 727)
|
||||
(CHARDP R 130)
|
||||
)
|
||||
(CHARACTER O 200 (comment arrowleft)
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 511)
|
||||
(CHARDP R 11)
|
||||
)
|
||||
(CHARACTER O 240 (comment space)
|
||||
(CHARWD R 333)
|
||||
)
|
||||
(CHARACTER O 241 (comment minus)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 270)
|
||||
)
|
||||
(CHARACTER O 242 (comment periodcentered)
|
||||
(CHARWD R 277)
|
||||
(CHARHT R 303)
|
||||
)
|
||||
(CHARACTER O 243 (comment multiply)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 491)
|
||||
)
|
||||
(CHARACTER O 244 (comment asteriskmath)
|
||||
(CHARWD R 500)
|
||||
(CHARHT R 465)
|
||||
)
|
||||
(CHARACTER O 245 (comment divide)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 529)
|
||||
(CHARDP R 29)
|
||||
)
|
||||
(CHARACTER O 246 (comment diamondmath)
|
||||
(CHARWD R 500)
|
||||
(CHARHT R 488)
|
||||
)
|
||||
(CHARACTER O 247 (comment plusminus)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 666)
|
||||
)
|
||||
(CHARACTER O 250 (comment minusplus)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 500)
|
||||
(CHARDP R 166)
|
||||
)
|
||||
(CHARACTER O 251 (comment circleplus)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 583)
|
||||
(CHARDP R 83)
|
||||
)
|
||||
(CHARACTER O 252 (comment circleminus)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 583)
|
||||
(CHARDP R 83)
|
||||
)
|
||||
(CHARACTER O 255 (comment circlemultiply)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 583)
|
||||
(CHARDP R 83)
|
||||
)
|
||||
(CHARACTER O 256 (comment circledivide)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 583)
|
||||
(CHARDP R 83)
|
||||
)
|
||||
(CHARACTER O 257 (comment circledot)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 583)
|
||||
(CHARDP R 83)
|
||||
)
|
||||
(CHARACTER O 260 (comment circlecopyrt)
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 716)
|
||||
(CHARDP R 216)
|
||||
)
|
||||
(CHARACTER O 261 (comment openbullet)
|
||||
(CHARWD R 500)
|
||||
(CHARHT R 444)
|
||||
)
|
||||
(CHARACTER O 262 (comment bullet)
|
||||
(CHARWD R 500)
|
||||
(CHARHT R 444)
|
||||
)
|
||||
(CHARACTER O 263 (comment equivasymptotic)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 484)
|
||||
)
|
||||
(CHARACTER O 264 (comment equivalence)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 464)
|
||||
)
|
||||
(CHARACTER O 265 (comment reflexsubset)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 636)
|
||||
(CHARDP R 137)
|
||||
)
|
||||
(CHARACTER O 266 (comment reflexsuperset)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 636)
|
||||
(CHARDP R 137)
|
||||
)
|
||||
(CHARACTER O 267 (comment lessequal)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 636)
|
||||
(CHARDP R 137)
|
||||
)
|
||||
(CHARACTER O 270 (comment greaterequal)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 636)
|
||||
(CHARDP R 137)
|
||||
)
|
||||
(CHARACTER O 271 (comment precedesequal)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 636)
|
||||
(CHARDP R 137)
|
||||
)
|
||||
(CHARACTER O 272 (comment followsequal)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 636)
|
||||
(CHARDP R 137)
|
||||
)
|
||||
(CHARACTER O 273 (comment similar)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 367)
|
||||
)
|
||||
(CHARACTER O 274 (comment approxequal)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 483)
|
||||
)
|
||||
(CHARACTER O 275 (comment propersubset)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 540)
|
||||
(CHARDP R 40)
|
||||
)
|
||||
(CHARACTER O 276 (comment propersuperset)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 540)
|
||||
(CHARDP R 40)
|
||||
)
|
||||
(CHARACTER O 277 (comment lessmuch)
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 566)
|
||||
(CHARDP R 66)
|
||||
)
|
||||
(CHARACTER O 300 (comment greatermuch)
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 566)
|
||||
(CHARDP R 66)
|
||||
)
|
||||
(CHARACTER O 301 (comment precedes)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 539)
|
||||
(CHARDP R 40)
|
||||
)
|
||||
(CHARACTER O 302 (comment follows)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 539)
|
||||
(CHARDP R 40)
|
||||
)
|
||||
(CHARACTER O 303 (comment arrowleft)
|
||||
(CHARWD R 1000)
|
||||
(CHARHT R 511)
|
||||
(CHARDP R 11)
|
||||
)
|
||||
(CHARACTER O 304 (comment spade)
|
||||
(CHARWD R 777)
|
||||
(CHARHT R 727)
|
||||
(CHARDP R 130)
|
||||
)
|
|
@ -1,336 +0,0 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
import re
|
||||
import json
|
||||
import os
|
||||
|
||||
expr_start = re.compile(r"\s*\(")
|
||||
expr_value = re.compile(r"\s*([^\s\)]+)")
|
||||
expr_end = re.compile(r"\s*\)")
|
||||
empty = re.compile(r"\s*$")
|
||||
|
||||
|
||||
def inner_parse_expr(expr):
|
||||
l = []
|
||||
while True:
|
||||
if re.match(empty, expr):
|
||||
return expr, l
|
||||
elif re.match(expr_start, expr):
|
||||
match = re.match(expr_start, expr)
|
||||
new_expr = expr[len(match.group(0)):]
|
||||
expr, group = inner_parse_expr(new_expr)
|
||||
l.append(group)
|
||||
elif re.match(expr_value, expr):
|
||||
match = re.match(expr_value, expr)
|
||||
expr = expr[len(match.group(0)):]
|
||||
l.append(match.group(1))
|
||||
elif re.match(expr_end, expr):
|
||||
match = re.match(expr_end, expr)
|
||||
new_expr = expr[len(match.group(0)):]
|
||||
return new_expr, l
|
||||
else:
|
||||
raise ValueError("Invalid input")
|
||||
|
||||
|
||||
def parse_expr(expr):
|
||||
_, group = inner_parse_expr(expr)
|
||||
return group
|
||||
|
||||
|
||||
def read_pl(pl_file):
|
||||
with open(pl_file) as pl:
|
||||
return parse_expr(pl.read())
|
||||
|
||||
|
||||
class Metric:
|
||||
def __init__(self, char, height, depth, italic_correction):
|
||||
self.char = char
|
||||
self.height = float(height) / 1000
|
||||
self.depth = float(depth) / 1000
|
||||
self.italic_correction = float(italic_correction) / 1000
|
||||
|
||||
def __repr__(self):
|
||||
return "Char {0} ({1:.3f}+{2:.3f})".format(
|
||||
self.char, self.height, self.depth)
|
||||
|
||||
|
||||
# Different styles of text, found on page 13 of The TeX book
|
||||
ROMAN = "roman"
|
||||
SLANTED = "slanted"
|
||||
ITALIC = "italic"
|
||||
TYPEWRITER = "typewriter"
|
||||
BOLD = "bold"
|
||||
|
||||
|
||||
# The numbers used in this map are all in octal, because that's how all the
|
||||
# charts for the numbers are written
|
||||
file_map = {
|
||||
"cmmi10.pl": {
|
||||
13: (u"\u03b1", ITALIC), # \alpha
|
||||
14: (u"\u03b2", ITALIC), # \beta
|
||||
15: (u"\u03b3", ITALIC), # \gamma
|
||||
16: (u"\u03b4", ITALIC), # \delta
|
||||
17: (u"\u03b5", ITALIC), # \varepsilon
|
||||
20: (u"\u03b6", ITALIC), # \zeta
|
||||
21: (u"\u03b7", ITALIC), # \eta
|
||||
22: (u"\u03b8", ITALIC), # \theta
|
||||
23: (u"\u03b9", ITALIC), # \iota
|
||||
24: (u"\u03ba", ITALIC), # \kappa
|
||||
25: (u"\u03bb", ITALIC), # \lambda
|
||||
26: (u"\u03bc", ITALIC), # \mu
|
||||
27: (u"\u03bd", ITALIC), # \nu
|
||||
30: (u"\u03be", ITALIC), # \xi
|
||||
31: (u"\u03c0", ITALIC), # \pi
|
||||
32: (u"\u03c1", ITALIC), # \rho
|
||||
33: (u"\u03c3", ITALIC), # \sigma
|
||||
34: (u"\u03c4", ITALIC), # \tau
|
||||
35: (u"\u03c5", ITALIC), # \upsilon
|
||||
36: (u"\u03d5", ITALIC), # \phi
|
||||
37: (u"\u03c7", ITALIC), # \chi
|
||||
40: (u"\u03c8", ITALIC), # \psi
|
||||
41: (u"\u03c9", ITALIC), # \omega
|
||||
42: (u"\u03b5", ITALIC), # \epsilon
|
||||
43: (u"\u03d1", ITALIC), # \vartheta
|
||||
44: (u"\u03d6", ITALIC), # \varpi
|
||||
45: (u"\u03f1", ITALIC), # \varrho
|
||||
46: (u"\u03c2", ITALIC), # \varsigma
|
||||
47: (u"\u03c6", ITALIC), # \varphi
|
||||
72: (u".", ROMAN),
|
||||
73: (u",", ROMAN),
|
||||
74: (u"<", ROMAN),
|
||||
75: (u"/", ROMAN),
|
||||
76: (u">", ROMAN),
|
||||
101: (u"A", ITALIC),
|
||||
102: (u"B", ITALIC),
|
||||
103: (u"C", ITALIC),
|
||||
104: (u"D", ITALIC),
|
||||
105: (u"E", ITALIC),
|
||||
106: (u"F", ITALIC),
|
||||
107: (u"G", ITALIC),
|
||||
110: (u"H", ITALIC),
|
||||
111: (u"I", ITALIC),
|
||||
112: (u"J", ITALIC),
|
||||
113: (u"K", ITALIC),
|
||||
114: (u"L", ITALIC),
|
||||
115: (u"M", ITALIC),
|
||||
116: (u"N", ITALIC),
|
||||
117: (u"O", ITALIC),
|
||||
120: (u"P", ITALIC),
|
||||
121: (u"Q", ITALIC),
|
||||
122: (u"R", ITALIC),
|
||||
123: (u"S", ITALIC),
|
||||
124: (u"T", ITALIC),
|
||||
125: (u"U", ITALIC),
|
||||
126: (u"V", ITALIC),
|
||||
127: (u"W", ITALIC),
|
||||
130: (u"X", ITALIC),
|
||||
131: (u"Y", ITALIC),
|
||||
132: (u"Z", ITALIC),
|
||||
141: (u"a", ITALIC),
|
||||
142: (u"b", ITALIC),
|
||||
143: (u"c", ITALIC),
|
||||
144: (u"d", ITALIC),
|
||||
145: (u"e", ITALIC),
|
||||
146: (u"f", ITALIC),
|
||||
147: (u"g", ITALIC),
|
||||
150: (u"h", ITALIC),
|
||||
151: (u"i", ITALIC),
|
||||
152: (u"j", ITALIC),
|
||||
153: (u"k", ITALIC),
|
||||
154: (u"l", ITALIC),
|
||||
155: (u"m", ITALIC),
|
||||
156: (u"n", ITALIC),
|
||||
157: (u"o", ITALIC),
|
||||
160: (u"p", ITALIC),
|
||||
161: (u"q", ITALIC),
|
||||
162: (u"r", ITALIC),
|
||||
163: (u"s", ITALIC),
|
||||
164: (u"t", ITALIC),
|
||||
165: (u"u", ITALIC),
|
||||
166: (u"v", ITALIC),
|
||||
167: (u"w", ITALIC),
|
||||
170: (u"x", ITALIC),
|
||||
171: (u"y", ITALIC),
|
||||
172: (u"z", ITALIC),
|
||||
},
|
||||
"cmr10.pl": {
|
||||
0: (u"\u0393", ROMAN), # \Gamma
|
||||
1: (u"\u0394", ROMAN), # \Delta
|
||||
2: (u"\u0398", ROMAN), # \Theta
|
||||
3: (u"\u039b", ROMAN), # \Lambda
|
||||
4: (u"\u039e", ROMAN), # \Xi
|
||||
5: (u"\u03a0", ROMAN), # \Pi
|
||||
6: (u"\u03a3", ROMAN), # \Sigma
|
||||
7: (u"\u03a5", ROMAN), # \Upsilon
|
||||
10: (u"\u03a6", ROMAN), # \Phi
|
||||
11: (u"\u03a8", ROMAN), # \Psi
|
||||
12: (u"\u03a9", ROMAN), # \Omega
|
||||
41: (u"!", ROMAN),
|
||||
42: (u"\"", ROMAN),
|
||||
44: (u"$", ROMAN),
|
||||
50: (u"(", ROMAN),
|
||||
51: (u")", ROMAN),
|
||||
53: (u"+", ROMAN),
|
||||
60: (u"0", ROMAN),
|
||||
61: (u"1", ROMAN),
|
||||
62: (u"2", ROMAN),
|
||||
63: (u"3", ROMAN),
|
||||
64: (u"4", ROMAN),
|
||||
65: (u"5", ROMAN),
|
||||
66: (u"6", ROMAN),
|
||||
67: (u"7", ROMAN),
|
||||
70: (u"8", ROMAN),
|
||||
71: (u"9", ROMAN),
|
||||
72: (u":", ROMAN),
|
||||
73: (u";", ROMAN),
|
||||
75: (u"=", ROMAN),
|
||||
77: (u"?", ROMAN),
|
||||
100: (u"@", ROMAN),
|
||||
101: (u"A", ROMAN),
|
||||
102: (u"B", ROMAN),
|
||||
103: (u"C", ROMAN),
|
||||
104: (u"D", ROMAN),
|
||||
105: (u"E", ROMAN),
|
||||
106: (u"F", ROMAN),
|
||||
107: (u"G", ROMAN),
|
||||
110: (u"H", ROMAN),
|
||||
111: (u"I", ROMAN),
|
||||
112: (u"J", ROMAN),
|
||||
113: (u"K", ROMAN),
|
||||
114: (u"L", ROMAN),
|
||||
115: (u"M", ROMAN),
|
||||
116: (u"N", ROMAN),
|
||||
117: (u"O", ROMAN),
|
||||
120: (u"P", ROMAN),
|
||||
121: (u"Q", ROMAN),
|
||||
122: (u"R", ROMAN),
|
||||
123: (u"S", ROMAN),
|
||||
124: (u"T", ROMAN),
|
||||
125: (u"U", ROMAN),
|
||||
126: (u"V", ROMAN),
|
||||
127: (u"W", ROMAN),
|
||||
130: (u"X", ROMAN),
|
||||
131: (u"Y", ROMAN),
|
||||
132: (u"Z", ROMAN),
|
||||
133: (u"[", ROMAN),
|
||||
135: (u"]", ROMAN),
|
||||
140: (u"`", ROMAN),
|
||||
141: (u"a", ROMAN),
|
||||
142: (u"b", ROMAN),
|
||||
143: (u"c", ROMAN),
|
||||
144: (u"d", ROMAN),
|
||||
145: (u"e", ROMAN),
|
||||
146: (u"f", ROMAN),
|
||||
147: (u"g", ROMAN),
|
||||
150: (u"h", ROMAN),
|
||||
151: (u"i", ROMAN),
|
||||
152: (u"j", ROMAN),
|
||||
153: (u"k", ROMAN),
|
||||
154: (u"l", ROMAN),
|
||||
155: (u"m", ROMAN),
|
||||
156: (u"n", ROMAN),
|
||||
157: (u"o", ROMAN),
|
||||
160: (u"p", ROMAN),
|
||||
161: (u"q", ROMAN),
|
||||
162: (u"r", ROMAN),
|
||||
163: (u"s", ROMAN),
|
||||
164: (u"t", ROMAN),
|
||||
165: (u"u", ROMAN),
|
||||
166: (u"v", ROMAN),
|
||||
167: (u"w", ROMAN),
|
||||
170: (u"x", ROMAN),
|
||||
171: (u"y", ROMAN),
|
||||
172: (u"z", ROMAN),
|
||||
},
|
||||
"cmsy10.pl": {
|
||||
0: (u"\u2212", ROMAN), # -
|
||||
1: (u"\u22c5", ROMAN), # \cdot
|
||||
2: (u"\u00d7", ROMAN), # \times
|
||||
3: (u"\u2217", ROMAN), # *
|
||||
4: (u"\u00f7", ROMAN), # \div
|
||||
6: (u"\u00b1", ROMAN), # \pm
|
||||
16: (u"\u2218", ROMAN), # \circ
|
||||
24: (u"\u2264", ROMAN), # \leq
|
||||
25: (u"\u2265", ROMAN), # \geq
|
||||
40: (u"\u2190", ROMAN), # \leftarrow
|
||||
41: (u"\u2192", ROMAN), # \rightarrow
|
||||
60: (u"\u2032", ROMAN), # \prime
|
||||
61: (u"\u221e", ROMAN), # \infty
|
||||
152: (u"|", ROMAN), # |
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
def read_metrics(pl_file, metrics):
|
||||
pl = read_pl(pl_file)
|
||||
|
||||
metrics_to_read = file_map[pl_file]
|
||||
|
||||
for elem in pl:
|
||||
if elem[0] == "CHARACTER":
|
||||
if elem[1] == "C":
|
||||
char = int(oct(ord(elem[2])))
|
||||
elif elem[1] == "O":
|
||||
char = int(elem[2])
|
||||
else:
|
||||
continue
|
||||
|
||||
if not char in metrics_to_read:
|
||||
continue
|
||||
|
||||
map_char, map_style = metrics_to_read[char]
|
||||
|
||||
char_height = 0
|
||||
char_depth = 0
|
||||
italic_correction = 0
|
||||
|
||||
for metric in elem[3:]:
|
||||
if metric[0] == "comment":
|
||||
continue
|
||||
elif metric[0] == "CHARHT":
|
||||
char_height = int(metric[2])
|
||||
elif metric[0] == "CHARDP":
|
||||
char_depth = int(metric[2])
|
||||
elif metric[0] == "CHARIC":
|
||||
italic_correction = int(metric[2])
|
||||
|
||||
metrics[map_style].append(
|
||||
Metric(map_char, char_height, char_depth,
|
||||
italic_correction))
|
||||
|
||||
|
||||
def print_metrics(metrics):
|
||||
metric_map = {
|
||||
style: {
|
||||
"height": {
|
||||
metric.char: metric.height for metric in metric_list
|
||||
},
|
||||
"depth": {
|
||||
metric.char: metric.depth for metric in metric_list
|
||||
},
|
||||
"italicCorrection": {
|
||||
metric.char: metric.italic_correction for metric in metric_list
|
||||
},
|
||||
} for style, metric_list in metrics.iteritems()
|
||||
}
|
||||
|
||||
print "var metricMap = {0};".format(json.dumps(metric_map, indent=4))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
||||
|
||||
metrics = {
|
||||
"roman": [],
|
||||
"italic": [],
|
||||
"slanted": [],
|
||||
"typewriter": [],
|
||||
"bold": [],
|
||||
}
|
||||
|
||||
for metric_file in file_map:
|
||||
read_metrics(metric_file, metrics)
|
||||
|
||||
metrics["roman"].append(Metric(u'\u00a0', 0, 0, 0))
|
||||
|
||||
print_metrics(metrics)
|
Loading…
Reference in New Issue
Block a user