WriteLn(Stream, ''''/FirstChar '''' + IntToStr(FirstChar)); WriteLn(Stream, ''''/LastChar '''' + IntToStr(LastChar)); GetMem(pwidths, SizeOf(ABCArray)); Write(Stream, ''''/Widths [''''); GetCharABCWidths(b.Canvas.Handle, FirstChar, LastChar, pwidths^); for i := 0 to (LastChar - FirstChar) do Write(Stream, IntToStr(pwidths^[i].abcA + Integer(pwidths^[i].abcB) + pwidths^[i].abcC) + '''' ''''); WriteLn(Stream, '''']''''); FreeMem(pwidths); WriteLn(Stream, ''''>>''''); WriteLn(Stream, ''''endobj''''); Parent.XRefAdd(Stream); WriteLn(Stream, IntToStr(Index + 1 + Parent.FStartFonts) + '''' 0 obj''''); WriteLn(Stream, ''''<<''''); WriteLn(Stream, ''''/Type /FontDescriptor''''); WriteLn(Stream, ''''/FontName /'''' + FontName); WriteLn(Stream, ''''/Flags 32''''); WriteLn(Stream, ''''/FontBBox ['''' + IntToStr(pm^.otmrcFontBox.Left) + '''' '''' + IntToStr(pm^.otmrcFontBox.Bottom) + '''' '''' + IntToStr(pm^.otmrcFontBox.Right) + '''' '''' + IntToStr(pm^.otmrcFontBox.Top) + '''' ]''''); WriteLn(Stream, ''''/ItalicAngle '''' + IntToStr(pm^.otmItalicAngle)); WriteLn(Stream, ''''/Ascent '''' + IntToStr(pm^.otmAscent)); WriteLn(Stream, ''''/Descent '''' + IntToStr(pm^.otmDescent)); WriteLn(Stream, ''''/Leading '''' + IntToStr(pm^.otmTextMetrics.tmInternalLeading)); //NEW WriteLn(Stream, ''''/CapHeight '''' + IntToStr(pm^.otmTextMetrics.tmHeight)); WriteLn(Stream, ''''/XHeight '''' + IntToStr(pm^.otmsXHeight)); //NEW WriteLn(Stream, ''''/StemV '''' + IntToStr(50 + Round(sqr(pm^.otmTextMetrics.tmWeight / 65)))); WriteLn(Stream, ''''/AvgWidth '''' + IntToStr(pm^.otmTextMetrics.tmAveCharWidth)); //NEW WriteLn(Stream, ''''/MaxWidth '''' + IntToStr(pm^.otmTextMetrics.tmMaxCharWidth)); //NEW WriteLn(Stream, ''''/MissingWidth '''' + IntToStr(pm^.otmTextMetrics.tmAveCharWidth)); //NEW if Parent.FEmbedded then WriteLn(Stream, ''''/FontFile2 '''' + IntToStr(Index + 2 + Parent.FStartFonts) + '''' 0 R''''); WriteLn(Stream, ''''>>''''); WriteLn(Stream, ''''endobj''''); end; if Parent.FEmbedded then begin Parent.XRefAdd(Stream); WriteLn(Stream, IntToStr(Index + 2 + Parent.FStartFonts) + '''' 0 obj''''); i := GetFontData(b.Canvas.Handle, 0, 0, nil, 1); GetMem(pfont, i); i := GetFontData(b.Canvas.Handle, 0, 0, pfont, i); MemStream := TMemoryStream.Create; MemStream.Write(pfont^, i); MemStream1 := TMemoryStream.Create; frxDeflateStream(MemStream, MemStream1, gzMax); WriteLn(Stream, ''''<< /Length '''' + IntToStr(MemStream1.Size) + '''' /Filter /FlateDecode /Length1 '''' + IntToStr(MemStream.Size) + '''' >>''''); WriteLn(Stream, ''''stream''''); Stream.CopyFrom(MemStream1, 0); MemStream1.Free; MemStream.Free; FreeMem(pfont); WriteLn(Stream, ''''''''); WriteLn(Stream, ''''endstream''''); WriteLn(Stream, ''''endobj''''); end; except end; finally FreeMem(pm); b.Free; end; end;
上一页 [1] [2] [3] [4] |