Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/dvi/dvilib/dl-vffont.cc
diff options
context:
space:
mode:
Diffstat (limited to 'dvi/dvilib/dl-vffont.cc')
-rwxr-xr-xdvi/dvilib/dl-vffont.cc35
1 files changed, 30 insertions, 5 deletions
diff --git a/dvi/dvilib/dl-vffont.cc b/dvi/dvilib/dl-vffont.cc
index 91109d8..36d570f 100755
--- a/dvi/dvilib/dl-vffont.cc
+++ b/dvi/dvilib/dl-vffont.cc
@@ -3,14 +3,39 @@
using namespace DviLib;
-VfFont::VfFont (AbstractLoader &l, int at_size_arg) :
- at_size (at_size_arg)
+void
+VfFont::fixup_fontmap (DviFontMap *fontmap)
{
- DviParser parser (l);
- preamble = parser.parse_vf_font_preamble ();
+ typedef std::map<int, DviFontdefinition *>::iterator It;
+ for (It i = fontmap->fontmap.begin(); i != fontmap->fontmap.end(); ++i)
+ {
+ (*i).second->at_size = ((*i).second->at_size / 1048576.0) * preamble->design_size;
+#if 0
+ (*i).second->design_size = 1048576;
+#endif
+ }
+}
+VfFont::VfFont (AbstractLoader &l,
+ int at_size_arg)
+{
+ at_size = at_size_arg;
+ DviParser parser (l);
+ preamble = parser.parse_vf_font_preamble();
+
VfChar *ch;
- while ((ch = parser.parse_vf_char ()) != NULL)
+ while ((ch = parser.parse_vf_char()) != NULL)
+ {
chars[ch->character_code] = ch;
+ ch->fontmap = preamble->fontmap;
+ }
+
+ /* fixup fontmap
+ *
+ * FIXME: I don't think this is correct, but vftovp.web isn't
+ * totally clear on the issue
+ */
+
+ fixup_fontmap (preamble->fontmap);
}