Hi, great, those extensions! fabrice will generate me binaries one of these days ... so then i can test them!
The font map entry management is now taken over by --- AVL-trees :-)
so this brings us to: \pdfnewtree \nameoftree \pdfaddtotree \nameoftree {string} {tokens} \pdfgetfromtree \nameoftree \pdfresettree \nameoftree {string} which will give us a huge amount of hash space
Actually the whole former fm_tab list is replaced by a tree, which were lots of "trivial" mini changes (that's where the bugs are :-), but scattered over many files, therefore the many diffs. But this should now allow with high speed to register map entries, find existing ones, and replace/overload them by newer ones, if needed. There is also a new flag in the fm_entry structure, which tells, whether a font is already in use (the info might also be elsewhere but this flag came in handy).
good, let's get rid of the old mess
Another change is, that now \pdfmapfile{} primitives are also active after the first page, as many as you need, wherever. As long as a font is not in use, its entry is overloaded when \pdfmapfile{++mapfile.map} is given on any page. A font is actually used, when the first letter of the font is given. Then also a fresh mapfile scan is done (before this font is used), if new mapfiles are available.
good thinking!
I have further re-organized the function fm_read_info() in mapfile.c, and separated it into file and line scanning functions, for hopefully better legibility. (I had to remove Heiko's fine hashing patch, as it conflicted with the AVL stuff; the hashing is taken over by the tree with similar speed).
In principle, it should also be possible with a little work (but not implemented yet) to say \pdfmapfile{-mapfile.map}, which would _remove_ all entries matching those in this file, if not already in use. Any application for this? Also possible (but not yet implemented) should be something like:
\pdfmapfile{*++phvr8r Helvetica-Down "TeXBase1Encoding ReEncodeFont"...}
Any need for such a direct map-line registering?
hm, one never knows ... i found out that sometimes when including files, pdftex makes invalid files due to the fact that it tries to load fonts (when it finds a tfm file, it also assumes that there is a map file, but when the map is not loaded, it results in errors (non resolved names). So, i wonder if it's possible to add a test in the pdf inclusion partwhere each tfm file to be used is checked against the loaded map entries and when not found there, no clever things are done: currently: - pdf to be included uses font ABC - pdftex locates whatever.tfm that seems to match ABC - pdftex produced invalid pdf if map file has no entry for whatever.tfm replacement: - pdf to be included uses font ABC - pdftex locates whatever.tfm that seems to match ABC - pdftex checks map files for entry for whatever.tfm - pdftex ignores tfm file for inclusion when no entry is found maybe we also need: \pdfignorefontname=1 which let map file loading skip the "Full Name" entry (another source of problems) Hans