mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-13 12:39:09 +02:00
* Some Range Checking fixes from Graeme Geldenhuys
git-svn-id: trunk@35094 -
This commit is contained in:
parent
d133f210ca
commit
9749ddc3bb
@ -52,7 +52,7 @@ type
|
|||||||
function ToUInt32(const ABytes: AnsiString): UInt32;
|
function ToUInt32(const ABytes: AnsiString): UInt32;
|
||||||
function GetRawTable(const ATableName: AnsiString): TMemoryStream;
|
function GetRawTable(const ATableName: AnsiString): TMemoryStream;
|
||||||
function WriteFileHeader(AOutStream: TStream; const nTables: integer): uint32;
|
function WriteFileHeader(AOutStream: TStream; const nTables: integer): uint32;
|
||||||
function WriteTableHeader(AOutStream: TStream; const ATag: AnsiString; const AOffset: UInt32; const AData: TStream): uint32;
|
function WriteTableHeader(AOutStream: TStream; const ATag: AnsiString; const AOffset: UInt32; const AData: TStream): int64;
|
||||||
procedure WriteTableBodies(AOutStream: TStream; const ATables: TStringList);
|
procedure WriteTableBodies(AOutStream: TStream; const ATables: TStringList);
|
||||||
// AGlyphID is the original GlyphID in the original TTF file
|
// AGlyphID is the original GlyphID in the original TTF file
|
||||||
function GetCharIDfromGlyphID(const AGlyphID: uint32): uint32;
|
function GetCharIDfromGlyphID(const AGlyphID: uint32): uint32;
|
||||||
@ -192,9 +192,9 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
function TFontSubsetter.WriteTableHeader(AOutStream: TStream; const ATag: AnsiString; const AOffset: UInt32;
|
function TFontSubsetter.WriteTableHeader(AOutStream: TStream; const ATag: AnsiString; const AOffset: UInt32;
|
||||||
const AData: TStream): uint32;
|
const AData: TStream): int64;
|
||||||
var
|
var
|
||||||
checksum: UInt32;
|
checksum: Int64;
|
||||||
n: integer;
|
n: integer;
|
||||||
lByte: Byte;
|
lByte: Byte;
|
||||||
begin
|
begin
|
||||||
@ -804,7 +804,12 @@ begin
|
|||||||
|
|
||||||
// idDelta
|
// idDelta
|
||||||
for i := 0 to segCount-1 do
|
for i := 0 to segCount-1 do
|
||||||
WriteUInt16(Result, idDelta[i]);
|
begin
|
||||||
|
{$IFDEF gDEBUG}
|
||||||
|
writeln(Format(' idDelta[%d] = %d', [i, idDelta[i]]));
|
||||||
|
{$ENDIF}
|
||||||
|
WriteInt16(Result, idDelta[i]);
|
||||||
|
end;
|
||||||
|
|
||||||
// idRangeOffset
|
// idRangeOffset
|
||||||
for i := 0 to segCount-1 do
|
for i := 0 to segCount-1 do
|
||||||
@ -887,8 +892,8 @@ end;
|
|||||||
|
|
||||||
procedure TFontSubsetter.SaveToStream(const AStream: TStream);
|
procedure TFontSubsetter.SaveToStream(const AStream: TStream);
|
||||||
var
|
var
|
||||||
checksum: uint64;
|
checksum: int64;
|
||||||
offset: uint64;
|
offset: int64;
|
||||||
head: TStream;
|
head: TStream;
|
||||||
hhea: TStream;
|
hhea: TStream;
|
||||||
maxp: TStream;
|
maxp: TStream;
|
||||||
|
Loading…
Reference in New Issue
Block a user