void PostScriptView::ConstProcs (ostream& out) { UList* fonts = GetPSFonts(); int nfonts = Count(fonts); out << "/IdrawDict " << (50 + nfonts) << " dict def\n"; out << "IdrawDict begin\n\n"; if (nfonts > 0) { for (const char** line = reencodeISO; *line != nil; ++line) { out << *line << "\n"; } for (UList* u = fonts->First(); u != fonts->End(); u = u->Next()) { PSFont* font = GetFont(u); // No way to check if the X font's encoding is iso8859-1, so... if (strncmp(font->GetPrintFont(), "Symbol", 6) != 0) { out << "/" << font->GetPrintFont() << " reencodeISO def\n"; } else { out << "/" << font->GetPrintFont() << " dup findfont def\n"; } } out << "\n"; } out << "/none null def\n"; out << "/numGraphicParameters 17 def\n"; out << "/stringLimit 65535 def\n\n"; }
static boolean Uncollected (const char* name, UList* fonts) { for (UList* u = fonts->First(); u != fonts->End(); u = u->Next()) { PSFont* font = (PSFont*) (*u)(); if (strcmp(font->GetPrintFont(), name) == 0) { return false; } } return true; }
void PostScriptView::FontNames (ostream& out) { UList* fonts = GetPSFonts(); const char* comment = "%%DocumentFonts:"; int linelen = strlen(comment); out << comment; for (UList* u = fonts->First(); u != fonts->End(); u = u->Next()) { PSFont* font = GetFont(u); if (linelen + strlen(font->GetPrintFont()) + 2 <= MAXLINELEN) { out << " "; ++linelen; } else { out << "\n%%+ "; linelen = strlen("%%+ "); } out << font->GetPrintFont(); linelen += strlen(font->GetPrintFont()); } out << "\n"; }
static void CollectFonts (GraphicComp* comp, UList* fonts) { PSFont* font = comp->GetGraphic()->GetFont(); if (font != nil && Uncollected(font->GetPrintFont(), fonts)) { fonts->Append(new UList(font)); } Iterator i; for (comp->First(i); !comp->Done(i); comp->Next(i)) { CollectFonts(comp->GetComp(i), fonts); } }
void PostScriptView::Font (ostream& out) { PSFont* font = (PSFont*) GetGraphicComp()->GetGraphic()->GetFont(); if (font == nil) { out << MARK << " f u\n"; } else { const char* name = font->GetName(); const char* pf = font->GetPrintFont(); const char* ps = font->GetPrintSize(); out << MARK << " f " << name << "\n"; out << pf << " " << ps << " SetF\n"; } }