mirror of
https://github.com/darlinghq/darling-cocotron.git
synced 2024-10-07 17:43:28 +00:00
- added more enums to NSStringEncoding
- implemented cStringUsingEncoding:NSUnicodeStringEncoding - removed NSNullTerminatedUnicodeFromString and replaced with cStringUsingEncoding:NSUnicodeStringEncoding - switched KGPDFContext to use KGFont instead of KTFont, added KGFont method for advances and recoding
This commit is contained in:
parent
d75354471e
commit
0c666b973e
@ -356,7 +356,6 @@
|
||||
C889756F0EA0BF3100D0A0A2 /* NSColor_CGColor.h in Headers */ = {isa = PBXBuildFile; fileRef = FE08C3210DDF299800B3169A /* NSColor_CGColor.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
||||
C88975700EA0BF3100D0A0A2 /* KGSurface_DIBSection.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF9CAE70E133FF2003502ED /* KGSurface_DIBSection.h */; };
|
||||
C88975710EA0BF3100D0A0A2 /* KGColorSpace+PDF.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF9CB780E13EB8E003502ED /* KGColorSpace+PDF.h */; };
|
||||
C88975720EA0BF3100D0A0A2 /* KTFont+PDF.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF9CB970E13EB8E003502ED /* KTFont+PDF.h */; };
|
||||
C88975730EA0BF3100D0A0A2 /* KGFunction+PDF.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF9CB990E13EB8E003502ED /* KGFunction+PDF.h */; };
|
||||
C88975740EA0BF3100D0A0A2 /* KGImage+PDF.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF9CB9B0E13EB8E003502ED /* KGImage+PDF.h */; };
|
||||
C88975750EA0BF3100D0A0A2 /* KGShading+PDF.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF9CB9D0E13EB8E003502ED /* KGShading+PDF.h */; };
|
||||
@ -657,7 +656,6 @@
|
||||
C88976CF0EA0BF3100D0A0A2 /* KGPaint_ramp.m in Sources */ = {isa = PBXBuildFile; fileRef = FEBF5A0C0DCD450700CE5A1C /* KGPaint_ramp.m */; };
|
||||
C88976D00EA0BF3100D0A0A2 /* NSColor_CGColor.m in Sources */ = {isa = PBXBuildFile; fileRef = FE08C3220DDF299800B3169A /* NSColor_CGColor.m */; };
|
||||
C88976D20EA0BF3100D0A0A2 /* KGColorSpace+PDF.m in Sources */ = {isa = PBXBuildFile; fileRef = FEF9CB790E13EB8E003502ED /* KGColorSpace+PDF.m */; };
|
||||
C88976D30EA0BF3100D0A0A2 /* KTFont+PDF.m in Sources */ = {isa = PBXBuildFile; fileRef = FEF9CB980E13EB8E003502ED /* KTFont+PDF.m */; };
|
||||
C88976D40EA0BF3100D0A0A2 /* KGFunction+PDF.m in Sources */ = {isa = PBXBuildFile; fileRef = FEF9CB9A0E13EB8E003502ED /* KGFunction+PDF.m */; };
|
||||
C88976D50EA0BF3100D0A0A2 /* KGImage+PDF.m in Sources */ = {isa = PBXBuildFile; fileRef = FEF9CB9C0E13EB8E003502ED /* KGImage+PDF.m */; };
|
||||
C88976D60EA0BF3100D0A0A2 /* KGShading+PDF.m in Sources */ = {isa = PBXBuildFile; fileRef = FEF9CB9E0E13EB8E003502ED /* KGShading+PDF.m */; };
|
||||
@ -1034,7 +1032,6 @@
|
||||
C8A2E3F00F07EA1F0054397C /* NSColor_CGColor.h in Headers */ = {isa = PBXBuildFile; fileRef = FE08C3210DDF299800B3169A /* NSColor_CGColor.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
||||
C8A2E3F10F07EA1F0054397C /* KGSurface_DIBSection.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF9CAE70E133FF2003502ED /* KGSurface_DIBSection.h */; };
|
||||
C8A2E3F20F07EA1F0054397C /* KGColorSpace+PDF.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF9CB780E13EB8E003502ED /* KGColorSpace+PDF.h */; };
|
||||
C8A2E3F30F07EA1F0054397C /* KTFont+PDF.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF9CB970E13EB8E003502ED /* KTFont+PDF.h */; };
|
||||
C8A2E3F40F07EA1F0054397C /* KGFunction+PDF.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF9CB990E13EB8E003502ED /* KGFunction+PDF.h */; };
|
||||
C8A2E3F50F07EA1F0054397C /* KGImage+PDF.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF9CB9B0E13EB8E003502ED /* KGImage+PDF.h */; };
|
||||
C8A2E3F60F07EA1F0054397C /* KGShading+PDF.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF9CB9D0E13EB8E003502ED /* KGShading+PDF.h */; };
|
||||
@ -1341,7 +1338,6 @@
|
||||
C8A2E52D0F07EA1F0054397C /* KGPaint_ramp.m in Sources */ = {isa = PBXBuildFile; fileRef = FEBF5A0C0DCD450700CE5A1C /* KGPaint_ramp.m */; };
|
||||
C8A2E52E0F07EA1F0054397C /* NSColor_CGColor.m in Sources */ = {isa = PBXBuildFile; fileRef = FE08C3220DDF299800B3169A /* NSColor_CGColor.m */; };
|
||||
C8A2E52F0F07EA1F0054397C /* KGColorSpace+PDF.m in Sources */ = {isa = PBXBuildFile; fileRef = FEF9CB790E13EB8E003502ED /* KGColorSpace+PDF.m */; };
|
||||
C8A2E5300F07EA1F0054397C /* KTFont+PDF.m in Sources */ = {isa = PBXBuildFile; fileRef = FEF9CB980E13EB8E003502ED /* KTFont+PDF.m */; };
|
||||
C8A2E5310F07EA1F0054397C /* KGFunction+PDF.m in Sources */ = {isa = PBXBuildFile; fileRef = FEF9CB9A0E13EB8E003502ED /* KGFunction+PDF.m */; };
|
||||
C8A2E5320F07EA1F0054397C /* KGImage+PDF.m in Sources */ = {isa = PBXBuildFile; fileRef = FEF9CB9C0E13EB8E003502ED /* KGImage+PDF.m */; };
|
||||
C8A2E5330F07EA1F0054397C /* KGShading+PDF.m in Sources */ = {isa = PBXBuildFile; fileRef = FEF9CB9E0E13EB8E003502ED /* KGShading+PDF.m */; };
|
||||
@ -2703,6 +2699,10 @@
|
||||
FEAED7A50FD6C9820043F915 /* CGPDFContext.m in Sources */ = {isa = PBXBuildFile; fileRef = FEAED7A40FD6C9820043F915 /* CGPDFContext.m */; };
|
||||
FEAED7A60FD6C9820043F915 /* CGPDFContext.m in Sources */ = {isa = PBXBuildFile; fileRef = FEAED7A40FD6C9820043F915 /* CGPDFContext.m */; };
|
||||
FEAED7A70FD6C9820043F915 /* CGPDFContext.m in Sources */ = {isa = PBXBuildFile; fileRef = FEAED7A40FD6C9820043F915 /* CGPDFContext.m */; };
|
||||
FEB07FA00FF9B37C00C27509 /* KGFont+PDF.m in Sources */ = {isa = PBXBuildFile; fileRef = FEB07F9F0FF9B37C00C27509 /* KGFont+PDF.m */; };
|
||||
FEB07FA10FF9B37C00C27509 /* KGFont+PDF.m in Sources */ = {isa = PBXBuildFile; fileRef = FEB07F9F0FF9B37C00C27509 /* KGFont+PDF.m */; };
|
||||
FEB07FA20FF9B37C00C27509 /* KGFont+PDF.m in Sources */ = {isa = PBXBuildFile; fileRef = FEB07F9F0FF9B37C00C27509 /* KGFont+PDF.m */; };
|
||||
FEB07FA30FF9B37C00C27509 /* KGFont+PDF.m in Sources */ = {isa = PBXBuildFile; fileRef = FEB07F9F0FF9B37C00C27509 /* KGFont+PDF.m */; };
|
||||
FEBF55E50DCA112900CE5A1C /* KGImageSource_JPEG.h in Headers */ = {isa = PBXBuildFile; fileRef = FEBF55E20DCA112900CE5A1C /* KGImageSource_JPEG.h */; };
|
||||
FEBF55E60DCA112900CE5A1C /* KGPaint.h in Headers */ = {isa = PBXBuildFile; fileRef = FEBF55E30DCA112900CE5A1C /* KGPaint.h */; };
|
||||
FEBF55E70DCA112900CE5A1C /* KGPaint.m in Sources */ = {isa = PBXBuildFile; fileRef = FEBF55E40DCA112900CE5A1C /* KGPaint.m */; };
|
||||
@ -2736,8 +2736,6 @@
|
||||
FEF9CAEA0E133FF2003502ED /* KGSurface_DIBSection.m in Sources */ = {isa = PBXBuildFile; fileRef = FEF9CAE80E133FF2003502ED /* KGSurface_DIBSection.m */; };
|
||||
FEF9CB9F0E13EB8E003502ED /* KGColorSpace+PDF.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF9CB780E13EB8E003502ED /* KGColorSpace+PDF.h */; };
|
||||
FEF9CBA00E13EB8E003502ED /* KGColorSpace+PDF.m in Sources */ = {isa = PBXBuildFile; fileRef = FEF9CB790E13EB8E003502ED /* KGColorSpace+PDF.m */; };
|
||||
FEF9CBBE0E13EB8E003502ED /* KTFont+PDF.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF9CB970E13EB8E003502ED /* KTFont+PDF.h */; };
|
||||
FEF9CBBF0E13EB8E003502ED /* KTFont+PDF.m in Sources */ = {isa = PBXBuildFile; fileRef = FEF9CB980E13EB8E003502ED /* KTFont+PDF.m */; };
|
||||
FEF9CBC00E13EB8E003502ED /* KGFunction+PDF.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF9CB990E13EB8E003502ED /* KGFunction+PDF.h */; };
|
||||
FEF9CBC10E13EB8E003502ED /* KGFunction+PDF.m in Sources */ = {isa = PBXBuildFile; fileRef = FEF9CB9A0E13EB8E003502ED /* KGFunction+PDF.m */; };
|
||||
FEF9CBC20E13EB8E003502ED /* KGImage+PDF.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF9CB9B0E13EB8E003502ED /* KGImage+PDF.h */; };
|
||||
@ -3609,6 +3607,7 @@
|
||||
FEAED79C0FD6C96E0043F915 /* KGDataConsumer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KGDataConsumer.h; sourceTree = "<group>"; };
|
||||
FEAED79D0FD6C96E0043F915 /* KGDataConsumer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KGDataConsumer.m; sourceTree = "<group>"; };
|
||||
FEAED7A40FD6C9820043F915 /* CGPDFContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CGPDFContext.m; sourceTree = "<group>"; };
|
||||
FEB07F9F0FF9B37C00C27509 /* KGFont+PDF.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KGFont+PDF.m"; sourceTree = "<group>"; };
|
||||
FEBF55E20DCA112900CE5A1C /* KGImageSource_JPEG.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KGImageSource_JPEG.h; sourceTree = "<group>"; };
|
||||
FEBF55E30DCA112900CE5A1C /* KGPaint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KGPaint.h; sourceTree = "<group>"; };
|
||||
FEBF55E40DCA112900CE5A1C /* KGPaint.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KGPaint.m; sourceTree = "<group>"; };
|
||||
@ -3653,8 +3652,6 @@
|
||||
FEF9CAE80E133FF2003502ED /* KGSurface_DIBSection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KGSurface_DIBSection.m; sourceTree = "<group>"; };
|
||||
FEF9CB780E13EB8E003502ED /* KGColorSpace+PDF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KGColorSpace+PDF.h"; sourceTree = "<group>"; };
|
||||
FEF9CB790E13EB8E003502ED /* KGColorSpace+PDF.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KGColorSpace+PDF.m"; sourceTree = "<group>"; };
|
||||
FEF9CB970E13EB8E003502ED /* KTFont+PDF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KTFont+PDF.h"; sourceTree = "<group>"; };
|
||||
FEF9CB980E13EB8E003502ED /* KTFont+PDF.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KTFont+PDF.m"; sourceTree = "<group>"; };
|
||||
FEF9CB990E13EB8E003502ED /* KGFunction+PDF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KGFunction+PDF.h"; sourceTree = "<group>"; };
|
||||
FEF9CB9A0E13EB8E003502ED /* KGFunction+PDF.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KGFunction+PDF.m"; sourceTree = "<group>"; };
|
||||
FEF9CB9B0E13EB8E003502ED /* KGImage+PDF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KGImage+PDF.h"; sourceTree = "<group>"; };
|
||||
@ -4184,6 +4181,7 @@
|
||||
6E2B55B20976075300DA0954 /* CoreGraphics */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FEB07F9F0FF9B37C00C27509 /* KGFont+PDF.m */,
|
||||
FEAED7A40FD6C9820043F915 /* CGPDFContext.m */,
|
||||
FEAED79C0FD6C96E0043F915 /* KGDataConsumer.h */,
|
||||
FEAED79D0FD6C96E0043F915 /* KGDataConsumer.m */,
|
||||
@ -4193,8 +4191,6 @@
|
||||
FE25FF610EE58712009C91B1 /* KGFont.m */,
|
||||
FEF9CB780E13EB8E003502ED /* KGColorSpace+PDF.h */,
|
||||
FEF9CB790E13EB8E003502ED /* KGColorSpace+PDF.m */,
|
||||
FEF9CB970E13EB8E003502ED /* KTFont+PDF.h */,
|
||||
FEF9CB980E13EB8E003502ED /* KTFont+PDF.m */,
|
||||
FEF9CB990E13EB8E003502ED /* KGFunction+PDF.h */,
|
||||
FEF9CB9A0E13EB8E003502ED /* KGFunction+PDF.m */,
|
||||
FEF9CB9B0E13EB8E003502ED /* KGImage+PDF.h */,
|
||||
@ -5129,7 +5125,6 @@
|
||||
C889756F0EA0BF3100D0A0A2 /* NSColor_CGColor.h in Headers */,
|
||||
C88975700EA0BF3100D0A0A2 /* KGSurface_DIBSection.h in Headers */,
|
||||
C88975710EA0BF3100D0A0A2 /* KGColorSpace+PDF.h in Headers */,
|
||||
C88975720EA0BF3100D0A0A2 /* KTFont+PDF.h in Headers */,
|
||||
C88975730EA0BF3100D0A0A2 /* KGFunction+PDF.h in Headers */,
|
||||
C88975740EA0BF3100D0A0A2 /* KGImage+PDF.h in Headers */,
|
||||
C88975750EA0BF3100D0A0A2 /* KGShading+PDF.h in Headers */,
|
||||
@ -5493,7 +5488,6 @@
|
||||
C8A2E3F00F07EA1F0054397C /* NSColor_CGColor.h in Headers */,
|
||||
C8A2E3F10F07EA1F0054397C /* KGSurface_DIBSection.h in Headers */,
|
||||
C8A2E3F20F07EA1F0054397C /* KGColorSpace+PDF.h in Headers */,
|
||||
C8A2E3F30F07EA1F0054397C /* KTFont+PDF.h in Headers */,
|
||||
C8A2E3F40F07EA1F0054397C /* KGFunction+PDF.h in Headers */,
|
||||
C8A2E3F50F07EA1F0054397C /* KGImage+PDF.h in Headers */,
|
||||
C8A2E3F60F07EA1F0054397C /* KGShading+PDF.h in Headers */,
|
||||
@ -5855,7 +5849,6 @@
|
||||
FE08C3230DDF299800B3169A /* NSColor_CGColor.h in Headers */,
|
||||
FEF9CAE90E133FF2003502ED /* KGSurface_DIBSection.h in Headers */,
|
||||
FEF9CB9F0E13EB8E003502ED /* KGColorSpace+PDF.h in Headers */,
|
||||
FEF9CBBE0E13EB8E003502ED /* KTFont+PDF.h in Headers */,
|
||||
FEF9CBC00E13EB8E003502ED /* KGFunction+PDF.h in Headers */,
|
||||
FEF9CBC20E13EB8E003502ED /* KGImage+PDF.h in Headers */,
|
||||
FEF9CBC40E13EB8E003502ED /* KGShading+PDF.h in Headers */,
|
||||
@ -6887,7 +6880,6 @@
|
||||
C88976CF0EA0BF3100D0A0A2 /* KGPaint_ramp.m in Sources */,
|
||||
C88976D00EA0BF3100D0A0A2 /* NSColor_CGColor.m in Sources */,
|
||||
C88976D20EA0BF3100D0A0A2 /* KGColorSpace+PDF.m in Sources */,
|
||||
C88976D30EA0BF3100D0A0A2 /* KTFont+PDF.m in Sources */,
|
||||
C88976D40EA0BF3100D0A0A2 /* KGFunction+PDF.m in Sources */,
|
||||
C88976D50EA0BF3100D0A0A2 /* KGImage+PDF.m in Sources */,
|
||||
C88976D60EA0BF3100D0A0A2 /* KGShading+PDF.m in Sources */,
|
||||
@ -6920,6 +6912,7 @@
|
||||
FEAED79A0FD6C95D0043F915 /* CGDataConsumer.m in Sources */,
|
||||
FEAED7A10FD6C96E0043F915 /* KGDataConsumer.m in Sources */,
|
||||
FEAED7A60FD6C9820043F915 /* CGPDFContext.m in Sources */,
|
||||
FEB07FA10FF9B37C00C27509 /* KGFont+PDF.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -7218,7 +7211,6 @@
|
||||
C8A2E52D0F07EA1F0054397C /* KGPaint_ramp.m in Sources */,
|
||||
C8A2E52E0F07EA1F0054397C /* NSColor_CGColor.m in Sources */,
|
||||
C8A2E52F0F07EA1F0054397C /* KGColorSpace+PDF.m in Sources */,
|
||||
C8A2E5300F07EA1F0054397C /* KTFont+PDF.m in Sources */,
|
||||
C8A2E5310F07EA1F0054397C /* KGFunction+PDF.m in Sources */,
|
||||
C8A2E5320F07EA1F0054397C /* KGImage+PDF.m in Sources */,
|
||||
C8A2E5330F07EA1F0054397C /* KGShading+PDF.m in Sources */,
|
||||
@ -7249,6 +7241,7 @@
|
||||
FEAED7990FD6C95D0043F915 /* CGDataConsumer.m in Sources */,
|
||||
FEAED79F0FD6C96E0043F915 /* KGDataConsumer.m in Sources */,
|
||||
FEAED7A50FD6C9820043F915 /* CGPDFContext.m in Sources */,
|
||||
FEB07FA20FF9B37C00C27509 /* KGFont+PDF.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -7589,7 +7582,6 @@
|
||||
FE08C3240DDF299800B3169A /* NSColor_CGColor.m in Sources */,
|
||||
FEF9CAEA0E133FF2003502ED /* KGSurface_DIBSection.m in Sources */,
|
||||
FEF9CBA00E13EB8E003502ED /* KGColorSpace+PDF.m in Sources */,
|
||||
FEF9CBBF0E13EB8E003502ED /* KTFont+PDF.m in Sources */,
|
||||
FEF9CBC10E13EB8E003502ED /* KGFunction+PDF.m in Sources */,
|
||||
FEF9CBC30E13EB8E003502ED /* KGImage+PDF.m in Sources */,
|
||||
FEF9CBC50E13EB8E003502ED /* KGShading+PDF.m in Sources */,
|
||||
@ -7612,6 +7604,7 @@
|
||||
FEAED7A30FD6C96E0043F915 /* KGDataConsumer.m in Sources */,
|
||||
FEAED7A70FD6C9820043F915 /* CGPDFContext.m in Sources */,
|
||||
FEA661240FF5C6F300E2C03B /* KGFont_gdi.m in Sources */,
|
||||
FEB07FA00FF9B37C00C27509 /* KGFont+PDF.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -7845,6 +7838,7 @@
|
||||
FEA316190FD5667D00F480D4 /* NSToolbarItemGroup.m in Sources */,
|
||||
FEA3161A0FD5667D00F480D4 /* NSControllerMarker.m in Sources */,
|
||||
FEA3182C0FD5961100F480D4 /* NSRangeEntries.m in Sources */,
|
||||
FEB07FA30FF9B37C00C27509 /* KGFont+PDF.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -1,5 +1,7 @@
|
||||
#import <CoreGraphics/KGFont.h>
|
||||
|
||||
@interface KGFont_gdi : KGFont
|
||||
@interface KGFont_gdi : KGFont {
|
||||
unichar *_glyphsToCharacters;
|
||||
}
|
||||
|
||||
@end
|
||||
|
@ -1,5 +1,8 @@
|
||||
#import "KGFont_gdi.h"
|
||||
#undef _WIN32_WINNT
|
||||
#define _WIN32_WINNT 0x0501
|
||||
#import <windows.h>
|
||||
#import <Foundation/NSString_win32.h>
|
||||
|
||||
@implementation KGFont(GDI)
|
||||
|
||||
@ -9,24 +12,53 @@
|
||||
|
||||
@end
|
||||
|
||||
@interface KGFont_gdi(forward)
|
||||
-(void)fetchGlyphsToCharacters;
|
||||
@end
|
||||
|
||||
@implementation KGFont_gdi
|
||||
|
||||
static HFONT Win32FontHandleWithName(NSString *name,int unitsPerEm){
|
||||
const unichar *wideName=(const unichar *)[name cStringUsingEncoding:NSUnicodeStringEncoding];
|
||||
return CreateFontW(-unitsPerEm,0,0,0,FW_NORMAL,FALSE,FALSE,FALSE,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,wideName);
|
||||
}
|
||||
|
||||
-initWithFontName:(NSString *)name {
|
||||
if(name==nil){
|
||||
[self release];
|
||||
return nil;
|
||||
}
|
||||
_name=[name copy];
|
||||
|
||||
HDC dc=GetDC(NULL);
|
||||
HFONT dummy=CreateFont(0,0,0,0,FW_NORMAL,FALSE,FALSE,FALSE,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_DONTCARE,[name cString]);
|
||||
|
||||
if(dc==NULL){
|
||||
[self release];
|
||||
return nil;
|
||||
}
|
||||
|
||||
// P. 931 "Windows Graphics Programming" by Feng Yuan, 1st Ed. A font with height of negative otmEMSquare will have precise metrics
|
||||
// 2048 is a common TrueType em square, so we try that first, and if the font is not TrueType, maybe we'll get some decent metrics with a big size.
|
||||
_unitsPerEm=2048;
|
||||
|
||||
HFONT font=Win32FontHandleWithName(name,_unitsPerEm);
|
||||
TEXTMETRIC gdiMetrics;
|
||||
|
||||
_name=[name copy];
|
||||
SelectObject(dc,dummy);
|
||||
if(font==NULL){
|
||||
ReleaseDC(NULL,dc);
|
||||
[self release];
|
||||
return nil;
|
||||
}
|
||||
|
||||
SelectObject(dc,font);
|
||||
GetTextMetrics(dc,&gdiMetrics);
|
||||
|
||||
// default values if not truetype or truetype queries fail
|
||||
_unitsPerEm=1;
|
||||
_ascent=gdiMetrics.tmAscent;
|
||||
_descent=-gdiMetrics.tmDescent;
|
||||
_leading=0;
|
||||
_capHeight=0;
|
||||
_xHeight=0;
|
||||
_leading=gdiMetrics.tmInternalLeading+gdiMetrics.tmExternalLeading;
|
||||
_capHeight=gdiMetrics.tmHeight;
|
||||
_xHeight=gdiMetrics.tmHeight;
|
||||
_italicAngle=0;
|
||||
_stemV=0;
|
||||
_bbox.origin.x=0;
|
||||
@ -35,30 +67,32 @@
|
||||
_bbox.size.height=gdiMetrics.tmHeight;
|
||||
|
||||
if(gdiMetrics.tmPitchAndFamily&TMPF_TRUETYPE){
|
||||
int size=GetOutlineTextMetricsA(dc,0,NULL);
|
||||
OUTLINETEXTMETRICA *ttMetrics=__builtin_alloca(size);
|
||||
int size=GetOutlineTextMetricsW(dc,0,NULL);
|
||||
OUTLINETEXTMETRICW *ttMetrics=__builtin_alloca(size);
|
||||
|
||||
ttMetrics->otmSize=sizeof(OUTLINETEXTMETRICA);
|
||||
if(GetOutlineTextMetricsA(dc,size,ttMetrics)){
|
||||
ttMetrics->otmSize=sizeof(OUTLINETEXTMETRICW);
|
||||
if(size=GetOutlineTextMetricsW(dc,size,ttMetrics)){
|
||||
|
||||
if(ttMetrics->otmEMSquare!=_unitsPerEm){
|
||||
// if our first try didn't have the typical em square, recreate using the em square
|
||||
LOGFONT logFont;
|
||||
|
||||
/* P. 931 "Windows Graphics Programming" by Feng Yuan, 1st Ed.
|
||||
A font with height of negative otmEMSquare will have precise metrics */
|
||||
|
||||
GetObject(dummy,sizeof(logFont),&logFont);
|
||||
GetObject(font,sizeof(logFont),&logFont);
|
||||
logFont.lfHeight=-ttMetrics->otmEMSquare;
|
||||
logFont.lfWidth=0;
|
||||
|
||||
HFONT fontHandle=CreateFontIndirect(&logFont);
|
||||
SelectObject(dc,fontHandle);
|
||||
HFONT emSquareFont=CreateFontIndirect(&logFont);
|
||||
SelectObject(dc,emSquareFont);
|
||||
DeleteObject(font);
|
||||
font=emSquareFont;
|
||||
|
||||
ttMetrics->otmSize=sizeof(OUTLINETEXTMETRICA);
|
||||
size=GetOutlineTextMetricsA(dc,size,ttMetrics);
|
||||
ttMetrics->otmSize=sizeof(OUTLINETEXTMETRICW);
|
||||
size=GetOutlineTextMetricsW(dc,size,ttMetrics);
|
||||
}
|
||||
|
||||
DeleteObject(dummy);
|
||||
ReleaseDC(NULL,dc);
|
||||
if(size!=0){
|
||||
_unitsPerEm=ttMetrics->otmEMSquare;
|
||||
|
||||
if([name isEqualToString:@"Marlett"]){
|
||||
_ascent=ttMetrics->otmAscent;
|
||||
_descent=ttMetrics->otmDescent;
|
||||
@ -82,9 +116,18 @@
|
||||
}
|
||||
}
|
||||
|
||||
DeleteObject(font);
|
||||
ReleaseDC(NULL,dc);
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
-(void)dealloc {
|
||||
if(_glyphsToCharacters!=NULL)
|
||||
NSZoneFree(NULL,_glyphsToCharacters);
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
-(CGGlyph)glyphWithGlyphName:(NSString *)name {
|
||||
return 0;
|
||||
}
|
||||
@ -97,4 +140,111 @@
|
||||
return nil;
|
||||
}
|
||||
|
||||
-(void)fetchAdvances {
|
||||
[self fetchGlyphsToCharacters];
|
||||
|
||||
HANDLE library=LoadLibrary("GDI32");
|
||||
FARPROC getGlyphIndices=GetProcAddress(library,"GetGlyphIndicesW");
|
||||
HDC dc=GetDC(NULL);
|
||||
unichar characters[65536];
|
||||
uint16_t glyphs[65536];
|
||||
int i,max;
|
||||
ABCFLOAT *abc;
|
||||
|
||||
for(i=0;i<65536;i++)
|
||||
characters[i]=i;
|
||||
|
||||
HFONT font=Win32FontHandleWithName(_name,_unitsPerEm);
|
||||
SelectObject(dc,font);
|
||||
|
||||
getGlyphIndices(dc,characters,65535,glyphs,0);
|
||||
|
||||
_advances=NSZoneMalloc(NULL,sizeof(int)*_numberOfGlyphs);
|
||||
max=65535;
|
||||
max=((max/128)+1)*128;
|
||||
abc=__builtin_alloca(sizeof(ABCFLOAT)*max);
|
||||
if(!GetCharABCWidthsFloatW(dc,0,max-1,abc))
|
||||
NSLog(@"GetCharABCWidthsFloat failed");
|
||||
else {
|
||||
for(i=max;--i>=0;){
|
||||
CGGlyph glyph=glyphs[i];
|
||||
|
||||
|
||||
if(glyph<_numberOfGlyphs)
|
||||
_advances[glyph]=abc[i].abcfA+abc[i].abcfB+abc[i].abcfC;
|
||||
}
|
||||
}
|
||||
|
||||
DeleteObject(font);
|
||||
ReleaseDC(NULL,dc);
|
||||
}
|
||||
|
||||
// These are only used for PDF generation until we get PS glyph names working
|
||||
// They are both temporary and inaccurate
|
||||
|
||||
-(void)fetchGlyphsToCharacters {
|
||||
HDC dc=GetDC(NULL);
|
||||
unichar characters[65536];
|
||||
uint16_t glyphs[65536];
|
||||
int i,maxGlyph=0;
|
||||
HANDLE library=LoadLibrary("GDI32");
|
||||
FARPROC getGlyphIndices=GetProcAddress(library,"GetGlyphIndicesW");
|
||||
|
||||
for(i=0;i<65536;i++)
|
||||
characters[i]=i;
|
||||
|
||||
HFONT font=Win32FontHandleWithName(_name,_unitsPerEm);
|
||||
SelectObject(dc,font);
|
||||
getGlyphIndices(dc,characters,65535,glyphs,0);
|
||||
DeleteObject(font);
|
||||
ReleaseDC(NULL,dc);
|
||||
|
||||
for(i=0;i<65536;i++)
|
||||
maxGlyph=MAX(maxGlyph,glyphs[i]);
|
||||
_numberOfGlyphs=maxGlyph+1;
|
||||
|
||||
_glyphsToCharacters=NSZoneMalloc(NULL,sizeof(unichar)*_numberOfGlyphs);
|
||||
for(i=65536;--i>=0;){
|
||||
if(glyphs[i]<_numberOfGlyphs)
|
||||
_glyphsToCharacters[glyphs[i]]=characters[i];
|
||||
}
|
||||
}
|
||||
|
||||
-(void)getMacRomanBytes:(unsigned char *)bytes forGlyphs:(const CGGlyph *)glyphs length:(unsigned)length {
|
||||
if(_glyphsToCharacters==NULL)
|
||||
[self fetchGlyphsToCharacters];
|
||||
|
||||
int i;
|
||||
|
||||
for(i=0;i<length;i++){
|
||||
if(glyphs[i]<_numberOfGlyphs){
|
||||
unichar code=_glyphsToCharacters[glyphs[i]];
|
||||
|
||||
if(code<256)
|
||||
bytes[i]=code;
|
||||
else
|
||||
bytes[i]=' ';
|
||||
}
|
||||
else
|
||||
bytes[i]=' ';
|
||||
}
|
||||
}
|
||||
|
||||
-(void)getMacRomanEncoding:(CGGlyph[256])encoding {
|
||||
HDC dc=GetDC(NULL);
|
||||
unichar characters[256];
|
||||
HANDLE library=LoadLibrary("GDI32");
|
||||
FARPROC getGlyphIndices=GetProcAddress(library,"GetGlyphIndicesW");
|
||||
int i;
|
||||
|
||||
for(i=0;i<256;i++)
|
||||
characters[i]=i;
|
||||
|
||||
HFONT font=Win32FontHandleWithName(_name,_unitsPerEm);
|
||||
SelectObject(dc,font);
|
||||
getGlyphIndices(dc,characters,256,encoding,0);
|
||||
DeleteObject(font);
|
||||
ReleaseDC(NULL,dc);
|
||||
}
|
||||
|
||||
@end
|
||||
|
@ -13,8 +13,6 @@ typedef struct CGFontMetrics {
|
||||
float italicAngle;
|
||||
float capHeight;
|
||||
float xHeight;
|
||||
float stemV;
|
||||
float stemH;
|
||||
float underlineThickness;
|
||||
float underlinePosition;
|
||||
} CGFontMetrics;
|
||||
|
@ -297,8 +297,6 @@ static inline CGGlyphMetrics *fetchGlyphAdvancementIfNeeded(KTFont_gdi *self,CGG
|
||||
_metrics.capHeight=0;
|
||||
_metrics.leading=0;
|
||||
_metrics.xHeight=0;
|
||||
_metrics.stemV=0;
|
||||
_metrics.stemH=0;
|
||||
_metrics.underlineThickness=_size/24.0;
|
||||
if(_metrics.underlineThickness<0)
|
||||
_metrics.underlineThickness=1;
|
||||
@ -472,6 +470,7 @@ NSLog(@"name=%@,size=%f",[NSString stringWithCString:fontData. elfLogFont.lfFace
|
||||
return result;
|
||||
}
|
||||
|
||||
#if 1
|
||||
-(float)ascender {
|
||||
return _metrics.ascender/_metrics.emsquare*_metrics.scale;
|
||||
}
|
||||
@ -483,14 +482,7 @@ NSLog(@"name=%@,size=%f",[NSString stringWithCString:fontData. elfLogFont.lfFace
|
||||
-(float)leading {
|
||||
return _metrics.leading/_metrics.emsquare*_metrics.scale;
|
||||
}
|
||||
|
||||
-(float)stemV {
|
||||
return _metrics.stemV;
|
||||
}
|
||||
|
||||
-(float)stemH {
|
||||
return _metrics.stemH;
|
||||
}
|
||||
#endif
|
||||
|
||||
-(float)underlineThickness {
|
||||
return _metrics.underlineThickness/_metrics.emsquare*_metrics.scale;
|
||||
@ -500,18 +492,6 @@ NSLog(@"name=%@,size=%f",[NSString stringWithCString:fontData. elfLogFont.lfFace
|
||||
return _metrics.underlinePosition/_metrics.emsquare*_metrics.scale;
|
||||
}
|
||||
|
||||
-(float)italicAngle {
|
||||
return _metrics.italicAngle;
|
||||
}
|
||||
|
||||
-(float)xHeight {
|
||||
return _metrics.xHeight/_metrics.emsquare*_metrics.scale;
|
||||
}
|
||||
|
||||
-(float)capHeight {
|
||||
return _metrics.capHeight/_metrics.emsquare*_metrics.scale;
|
||||
}
|
||||
|
||||
-(unsigned)numberOfGlyphs {
|
||||
return _glyphInfoSet->numberOfGlyphs;
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
||||
browseInfo.hwndOwner=[(Win32Window *)[[NSApp keyWindow] platformWindow] windowHandle];
|
||||
browseInfo.pidlRoot=NULL;
|
||||
browseInfo.pszDisplayName=displayName;
|
||||
browseInfo.lpszTitle=NSNullTerminatedUnicodeFromString(_dialogTitle);
|
||||
browseInfo.lpszTitle=(const unichar *)[_dialogTitle cStringUsingEncoding:NSUnicodeStringEncoding];
|
||||
browseInfo.ulFlags=0;
|
||||
browseInfo.lpfn=NULL;
|
||||
browseInfo.lParam=0;
|
||||
@ -204,7 +204,7 @@ static unsigned *openFileHook(HWND hdlg,UINT uiMsg,WPARAM wParam,LPARAM lParam)
|
||||
openFileName.lpstrFileTitle=NULL;
|
||||
openFileName.nMaxFileTitle=0;
|
||||
openFileName.lpstrInitialDir=[_directory fileSystemRepresentationW];
|
||||
openFileName.lpstrTitle= NSNullTerminatedUnicodeFromString(_dialogTitle);
|
||||
openFileName.lpstrTitle= (const unichar *)[_dialogTitle cStringUsingEncoding:NSUnicodeStringEncoding];
|
||||
openFileName.Flags=
|
||||
(_allowsMultipleSelection?OFN_ALLOWMULTISELECT:0)|
|
||||
OFN_NOTESTFILECREATE|
|
||||
|
@ -91,7 +91,7 @@ static unsigned *saveFileHook(HWND hdlg,UINT uiMsg,WPARAM wParam,LPARAM lParam)
|
||||
openFileName.lpstrFileTitle=NULL;
|
||||
openFileName.nMaxFileTitle=0;
|
||||
openFileName.lpstrInitialDir=[_directory fileSystemRepresentationW];
|
||||
openFileName.lpstrTitle=NSNullTerminatedUnicodeFromString(_dialogTitle);
|
||||
openFileName.lpstrTitle=(const unichar *)[_dialogTitle cStringUsingEncoding:NSUnicodeStringEncoding];
|
||||
openFileName.Flags=
|
||||
OFN_CREATEPROMPT|
|
||||
OFN_NOTESTFILECREATE|
|
||||
|
@ -257,7 +257,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
||||
|
||||
|
||||
-(void)setTitle:(NSString *)title {
|
||||
SetWindowTextW(_handle,NSNullTerminatedUnicodeFromString(title));
|
||||
SetWindowTextW(_handle,(const unichar *)[title cStringUsingEncoding:NSUnicodeStringEncoding]);
|
||||
}
|
||||
|
||||
-(void)setFrame:(NSRect)frame {
|
||||
|
@ -26,7 +26,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
||||
@implementation Win32Workspace
|
||||
|
||||
-(BOOL)openURL:(NSURL *)url {
|
||||
return ((int)ShellExecuteW(GetDesktopWindow(),L"open",NSNullTerminatedUnicodeFromString([url absoluteString]),NULL,NULL,SW_SHOWNORMAL)<=32)?NO:YES;
|
||||
return ((int)ShellExecuteW(GetDesktopWindow(),L"open",(const unichar *)[[url absoluteString] cStringUsingEncoding:NSUnicodeStringEncoding],NULL,NULL,SW_SHOWNORMAL)<=32)?NO:YES;
|
||||
}
|
||||
|
||||
-(BOOL)openFile:(NSString *)path {
|
||||
|
@ -44,7 +44,7 @@
|
||||
isa = PBXContainerItemProxy;
|
||||
containerPortal = FECAF5010DB7119B00BA2A8E /* Foundation.xcodeproj */;
|
||||
proxyType = 2;
|
||||
remoteGlobalIDString = 28D487A90FE04E7100DC03EF /* Foundation.framework */;
|
||||
remoteGlobalIDString = 28D487A90FE04E7100DC03EF;
|
||||
remoteInfo = "Foundation-Linux-ppc";
|
||||
};
|
||||
FE65207B0FBE3D6300464BFD /* PBXContainerItemProxy */ = {
|
||||
|
@ -91,7 +91,6 @@
|
||||
FE6F7B4B0FD554A800C3244F /* KGShading.h in Headers */ = {isa = PBXBuildFile; fileRef = FEC11AD70FD4B4D600082282 /* KGShading.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
||||
FE6F7B4C0FD554A800C3244F /* KGSurface.h in Headers */ = {isa = PBXBuildFile; fileRef = FEC11AD90FD4B4D600082282 /* KGSurface.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
||||
FE6F7B4D0FD554A800C3244F /* KGzlib.h in Headers */ = {isa = PBXBuildFile; fileRef = FEC11ADB0FD4B4D600082282 /* KGzlib.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
||||
FE6F7B4E0FD554A800C3244F /* KTFont+PDF.h in Headers */ = {isa = PBXBuildFile; fileRef = FEC11ADD0FD4B4D600082282 /* KTFont+PDF.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
||||
FE6F7B4F0FD554A800C3244F /* KTFont.h in Headers */ = {isa = PBXBuildFile; fileRef = FEC11ADF0FD4B4D600082282 /* KTFont.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
||||
FE6F7B500FD554A800C3244F /* NSTIFFImageFileDirectory.h in Headers */ = {isa = PBXBuildFile; fileRef = FEC11AE10FD4B4D600082282 /* NSTIFFImageFileDirectory.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
||||
FE6F7B510FD554A800C3244F /* NSTIFFReader.h in Headers */ = {isa = PBXBuildFile; fileRef = FEC11AE30FD4B4D600082282 /* NSTIFFReader.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
||||
@ -180,7 +179,6 @@
|
||||
FE6F7BA60FD554A800C3244F /* KGShading.m in Sources */ = {isa = PBXBuildFile; fileRef = FEC11AD80FD4B4D600082282 /* KGShading.m */; };
|
||||
FE6F7BA70FD554A800C3244F /* KGSurface.m in Sources */ = {isa = PBXBuildFile; fileRef = FEC11ADA0FD4B4D600082282 /* KGSurface.m */; };
|
||||
FE6F7BA80FD554A800C3244F /* KGzlib.m in Sources */ = {isa = PBXBuildFile; fileRef = FEC11ADC0FD4B4D600082282 /* KGzlib.m */; };
|
||||
FE6F7BA90FD554A800C3244F /* KTFont+PDF.m in Sources */ = {isa = PBXBuildFile; fileRef = FEC11ADE0FD4B4D600082282 /* KTFont+PDF.m */; };
|
||||
FE6F7BAA0FD554A800C3244F /* KTFont.m in Sources */ = {isa = PBXBuildFile; fileRef = FEC11AE00FD4B4D600082282 /* KTFont.m */; };
|
||||
FE6F7BAB0FD554A800C3244F /* NSTIFFImageFileDirectory.m in Sources */ = {isa = PBXBuildFile; fileRef = FEC11AE20FD4B4D600082282 /* NSTIFFImageFileDirectory.m */; };
|
||||
FE6F7BAC0FD554A800C3244F /* NSTIFFReader.m in Sources */ = {isa = PBXBuildFile; fileRef = FEC11AE40FD4B4D600082282 /* NSTIFFReader.m */; };
|
||||
@ -270,7 +268,6 @@
|
||||
FE6F7C300FD55FA300C3244F /* KGShading.h in Headers */ = {isa = PBXBuildFile; fileRef = FEC11AD70FD4B4D600082282 /* KGShading.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
||||
FE6F7C310FD55FA300C3244F /* KGSurface.h in Headers */ = {isa = PBXBuildFile; fileRef = FEC11AD90FD4B4D600082282 /* KGSurface.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
||||
FE6F7C320FD55FA300C3244F /* KGzlib.h in Headers */ = {isa = PBXBuildFile; fileRef = FEC11ADB0FD4B4D600082282 /* KGzlib.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
||||
FE6F7C330FD55FA300C3244F /* KTFont+PDF.h in Headers */ = {isa = PBXBuildFile; fileRef = FEC11ADD0FD4B4D600082282 /* KTFont+PDF.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
||||
FE6F7C340FD55FA300C3244F /* KTFont.h in Headers */ = {isa = PBXBuildFile; fileRef = FEC11ADF0FD4B4D600082282 /* KTFont.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
||||
FE6F7C350FD55FA300C3244F /* NSTIFFImageFileDirectory.h in Headers */ = {isa = PBXBuildFile; fileRef = FEC11AE10FD4B4D600082282 /* NSTIFFImageFileDirectory.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
||||
FE6F7C360FD55FA300C3244F /* NSTIFFReader.h in Headers */ = {isa = PBXBuildFile; fileRef = FEC11AE30FD4B4D600082282 /* NSTIFFReader.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
||||
@ -359,7 +356,6 @@
|
||||
FE6F7C8B0FD55FA300C3244F /* KGShading.m in Sources */ = {isa = PBXBuildFile; fileRef = FEC11AD80FD4B4D600082282 /* KGShading.m */; };
|
||||
FE6F7C8C0FD55FA300C3244F /* KGSurface.m in Sources */ = {isa = PBXBuildFile; fileRef = FEC11ADA0FD4B4D600082282 /* KGSurface.m */; };
|
||||
FE6F7C8D0FD55FA300C3244F /* KGzlib.m in Sources */ = {isa = PBXBuildFile; fileRef = FEC11ADC0FD4B4D600082282 /* KGzlib.m */; };
|
||||
FE6F7C8E0FD55FA300C3244F /* KTFont+PDF.m in Sources */ = {isa = PBXBuildFile; fileRef = FEC11ADE0FD4B4D600082282 /* KTFont+PDF.m */; };
|
||||
FE6F7C8F0FD55FA300C3244F /* KTFont.m in Sources */ = {isa = PBXBuildFile; fileRef = FEC11AE00FD4B4D600082282 /* KTFont.m */; };
|
||||
FE6F7C900FD55FA300C3244F /* NSTIFFImageFileDirectory.m in Sources */ = {isa = PBXBuildFile; fileRef = FEC11AE20FD4B4D600082282 /* NSTIFFImageFileDirectory.m */; };
|
||||
FE6F7C910FD55FA300C3244F /* NSTIFFReader.m in Sources */ = {isa = PBXBuildFile; fileRef = FEC11AE40FD4B4D600082282 /* NSTIFFReader.m */; };
|
||||
@ -548,8 +544,6 @@
|
||||
FEC11B8A0FD4B4D600082282 /* KGSurface.m in Sources */ = {isa = PBXBuildFile; fileRef = FEC11ADA0FD4B4D600082282 /* KGSurface.m */; };
|
||||
FEC11B8B0FD4B4D600082282 /* KGzlib.h in Headers */ = {isa = PBXBuildFile; fileRef = FEC11ADB0FD4B4D600082282 /* KGzlib.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
||||
FEC11B8C0FD4B4D600082282 /* KGzlib.m in Sources */ = {isa = PBXBuildFile; fileRef = FEC11ADC0FD4B4D600082282 /* KGzlib.m */; };
|
||||
FEC11B8D0FD4B4D600082282 /* KTFont+PDF.h in Headers */ = {isa = PBXBuildFile; fileRef = FEC11ADD0FD4B4D600082282 /* KTFont+PDF.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
||||
FEC11B8E0FD4B4D600082282 /* KTFont+PDF.m in Sources */ = {isa = PBXBuildFile; fileRef = FEC11ADE0FD4B4D600082282 /* KTFont+PDF.m */; };
|
||||
FEC11B8F0FD4B4D600082282 /* KTFont.h in Headers */ = {isa = PBXBuildFile; fileRef = FEC11ADF0FD4B4D600082282 /* KTFont.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
||||
FEC11B900FD4B4D600082282 /* KTFont.m in Sources */ = {isa = PBXBuildFile; fileRef = FEC11AE00FD4B4D600082282 /* KTFont.m */; };
|
||||
FEC11B910FD4B4D600082282 /* NSTIFFImageFileDirectory.h in Headers */ = {isa = PBXBuildFile; fileRef = FEC11AE10FD4B4D600082282 /* NSTIFFImageFileDirectory.h */; settings = {ATTRIBUTES = (Private, ); }; };
|
||||
@ -843,8 +837,6 @@
|
||||
FEC11ADA0FD4B4D600082282 /* KGSurface.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KGSurface.m; sourceTree = "<group>"; };
|
||||
FEC11ADB0FD4B4D600082282 /* KGzlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KGzlib.h; sourceTree = "<group>"; };
|
||||
FEC11ADC0FD4B4D600082282 /* KGzlib.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KGzlib.m; sourceTree = "<group>"; };
|
||||
FEC11ADD0FD4B4D600082282 /* KTFont+PDF.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "KTFont+PDF.h"; sourceTree = "<group>"; };
|
||||
FEC11ADE0FD4B4D600082282 /* KTFont+PDF.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "KTFont+PDF.m"; sourceTree = "<group>"; };
|
||||
FEC11ADF0FD4B4D600082282 /* KTFont.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KTFont.h; sourceTree = "<group>"; };
|
||||
FEC11AE00FD4B4D600082282 /* KTFont.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KTFont.m; sourceTree = "<group>"; };
|
||||
FEC11AE10FD4B4D600082282 /* NSTIFFImageFileDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSTIFFImageFileDirectory.h; sourceTree = "<group>"; };
|
||||
@ -1075,8 +1067,6 @@
|
||||
FEC11ADA0FD4B4D600082282 /* KGSurface.m */,
|
||||
FEC11ADB0FD4B4D600082282 /* KGzlib.h */,
|
||||
FEC11ADC0FD4B4D600082282 /* KGzlib.m */,
|
||||
FEC11ADD0FD4B4D600082282 /* KTFont+PDF.h */,
|
||||
FEC11ADE0FD4B4D600082282 /* KTFont+PDF.m */,
|
||||
FEC11ADF0FD4B4D600082282 /* KTFont.h */,
|
||||
FEC11AE00FD4B4D600082282 /* KTFont.m */,
|
||||
FEC11AE10FD4B4D600082282 /* NSTIFFImageFileDirectory.h */,
|
||||
@ -1229,7 +1219,6 @@
|
||||
FEC11B870FD4B4D600082282 /* KGShading.h in Headers */,
|
||||
FEC11B890FD4B4D600082282 /* KGSurface.h in Headers */,
|
||||
FEC11B8B0FD4B4D600082282 /* KGzlib.h in Headers */,
|
||||
FEC11B8D0FD4B4D600082282 /* KTFont+PDF.h in Headers */,
|
||||
FEC11B8F0FD4B4D600082282 /* KTFont.h in Headers */,
|
||||
FEC11B910FD4B4D600082282 /* NSTIFFImageFileDirectory.h in Headers */,
|
||||
FEC11B930FD4B4D600082282 /* NSTIFFReader.h in Headers */,
|
||||
@ -1331,7 +1320,6 @@
|
||||
FE6F7B4B0FD554A800C3244F /* KGShading.h in Headers */,
|
||||
FE6F7B4C0FD554A800C3244F /* KGSurface.h in Headers */,
|
||||
FE6F7B4D0FD554A800C3244F /* KGzlib.h in Headers */,
|
||||
FE6F7B4E0FD554A800C3244F /* KTFont+PDF.h in Headers */,
|
||||
FE6F7B4F0FD554A800C3244F /* KTFont.h in Headers */,
|
||||
FE6F7B500FD554A800C3244F /* NSTIFFImageFileDirectory.h in Headers */,
|
||||
FE6F7B510FD554A800C3244F /* NSTIFFReader.h in Headers */,
|
||||
@ -1433,7 +1421,6 @@
|
||||
FE6F7C300FD55FA300C3244F /* KGShading.h in Headers */,
|
||||
FE6F7C310FD55FA300C3244F /* KGSurface.h in Headers */,
|
||||
FE6F7C320FD55FA300C3244F /* KGzlib.h in Headers */,
|
||||
FE6F7C330FD55FA300C3244F /* KTFont+PDF.h in Headers */,
|
||||
FE6F7C340FD55FA300C3244F /* KTFont.h in Headers */,
|
||||
FE6F7C350FD55FA300C3244F /* NSTIFFImageFileDirectory.h in Headers */,
|
||||
FE6F7C360FD55FA300C3244F /* NSTIFFReader.h in Headers */,
|
||||
@ -1701,7 +1688,6 @@
|
||||
FEC11B880FD4B4D600082282 /* KGShading.m in Sources */,
|
||||
FEC11B8A0FD4B4D600082282 /* KGSurface.m in Sources */,
|
||||
FEC11B8C0FD4B4D600082282 /* KGzlib.m in Sources */,
|
||||
FEC11B8E0FD4B4D600082282 /* KTFont+PDF.m in Sources */,
|
||||
FEC11B900FD4B4D600082282 /* KTFont.m in Sources */,
|
||||
FEC11B920FD4B4D600082282 /* NSTIFFImageFileDirectory.m in Sources */,
|
||||
FEC11B940FD4B4D600082282 /* NSTIFFReader.m in Sources */,
|
||||
@ -1797,7 +1783,6 @@
|
||||
FE6F7BA60FD554A800C3244F /* KGShading.m in Sources */,
|
||||
FE6F7BA70FD554A800C3244F /* KGSurface.m in Sources */,
|
||||
FE6F7BA80FD554A800C3244F /* KGzlib.m in Sources */,
|
||||
FE6F7BA90FD554A800C3244F /* KTFont+PDF.m in Sources */,
|
||||
FE6F7BAA0FD554A800C3244F /* KTFont.m in Sources */,
|
||||
FE6F7BAB0FD554A800C3244F /* NSTIFFImageFileDirectory.m in Sources */,
|
||||
FE6F7BAC0FD554A800C3244F /* NSTIFFReader.m in Sources */,
|
||||
@ -1893,7 +1878,6 @@
|
||||
FE6F7C8B0FD55FA300C3244F /* KGShading.m in Sources */,
|
||||
FE6F7C8C0FD55FA300C3244F /* KGSurface.m in Sources */,
|
||||
FE6F7C8D0FD55FA300C3244F /* KGzlib.m in Sources */,
|
||||
FE6F7C8E0FD55FA300C3244F /* KTFont+PDF.m in Sources */,
|
||||
FE6F7C8F0FD55FA300C3244F /* KTFont.m in Sources */,
|
||||
FE6F7C900FD55FA300C3244F /* NSTIFFImageFileDirectory.m in Sources */,
|
||||
FE6F7C910FD55FA300C3244F /* NSTIFFReader.m in Sources */,
|
||||
|
@ -3,6 +3,6 @@
|
||||
@class KGPDFObject,KGPDFContext;
|
||||
|
||||
@interface KGFont(PDF)
|
||||
-(void)getBytes:(unsigned char *)bytes forGlyphs:(const CGGlyph *)glyphs length:(unsigned)length;
|
||||
-(void)getMacRomanBytes:(unsigned char *)bytes forGlyphs:(const CGGlyph *)glyphs length:(unsigned)length;
|
||||
-(KGPDFObject *)encodeReferenceWithContext:(KGPDFContext *)context size:(CGFloat)size;
|
||||
@end
|
||||
|
@ -296,7 +296,8 @@ KGPDFArray *O2FontCreatePDFWidthsWithEncoding(O2FontRef self,CGGlyph encoding[25
|
||||
return result;
|
||||
}
|
||||
|
||||
-(void)getBytes:(unsigned char *)bytes forGlyphs:(const CGGlyph *)glyphs length:(unsigned)length {
|
||||
// this is overriden for GDI
|
||||
-(void)getMacRomanBytes:(unsigned char *)bytes forGlyphs:(const CGGlyph *)glyphs length:(unsigned)length {
|
||||
int i;
|
||||
|
||||
for(i=0;i<length;i++){
|
||||
@ -342,6 +343,14 @@ KGPDFArray *O2FontCreatePDFWidthsWithEncoding(O2FontRef self,CGGlyph encoding[25
|
||||
return result;
|
||||
}
|
||||
|
||||
// this is overriden for GDI
|
||||
-(void)getMacRomanEncoding:(CGGlyph[256])encoding {
|
||||
int i;
|
||||
|
||||
for(i=0;i<256;i++)
|
||||
encoding[i]=O2FontGetGlyphWithGlyphName(self,MacRomanEncoding[i]);
|
||||
}
|
||||
|
||||
-(KGPDFObject *)encodeReferenceWithContext:(KGPDFContext *)context size:(CGFloat)size {
|
||||
KGPDFObject *reference=[context referenceForFontWithName:self->_name size:size];
|
||||
|
||||
@ -350,8 +359,8 @@ KGPDFArray *O2FontCreatePDFWidthsWithEncoding(O2FontRef self,CGGlyph encoding[25
|
||||
CGGlyph encoding[256];
|
||||
int i;
|
||||
|
||||
for(i=32;i<256;i++)
|
||||
encoding[i]=O2FontGetGlyphWithGlyphName(self,MacRomanEncoding[i]);
|
||||
[self getMacRomanEncoding:encoding];
|
||||
|
||||
|
||||
[result setNameForKey:"Type" value:"Font"];
|
||||
[result setNameForKey:"Subtype" value:"TrueType"];
|
||||
|
@ -34,6 +34,8 @@ typedef KGFont *O2FontRef;
|
||||
-(CGGlyph)glyphWithGlyphName:(NSString *)name;
|
||||
-(NSString *)copyGlyphNameForGlyph:(CGGlyph)glyph;
|
||||
|
||||
-(void)fetchAdvances;
|
||||
|
||||
O2FontRef O2FontCreateWithFontName(NSString *name);
|
||||
O2FontRef O2FontRetain(O2FontRef self);
|
||||
void O2FontRelease(O2FontRef self);
|
||||
|
@ -39,6 +39,10 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
||||
return nil;
|
||||
}
|
||||
|
||||
-(void)fetchAdvances {
|
||||
KGInvalidAbstractInvocation();
|
||||
}
|
||||
|
||||
O2FontRef O2FontCreateWithFontName(NSString *name) {
|
||||
return [[KGFont alloc] initWithFontName:name];
|
||||
}
|
||||
@ -99,6 +103,9 @@ size_t O2FontGetNumberOfGlyphs(O2FontRef self) {
|
||||
BOOL O2FontGetGlyphAdvances(O2FontRef self,const CGGlyph *glyphs,size_t count,int *advances) {
|
||||
size_t i;
|
||||
|
||||
if(self->_advances==NULL)
|
||||
[self fetchAdvances];
|
||||
|
||||
for(i=0;i<count;i++){
|
||||
CGGlyph glyph=glyphs[i];
|
||||
|
||||
|
@ -19,7 +19,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
||||
#import "KGPDFString.h"
|
||||
#import "KGShading+PDF.h"
|
||||
#import "KGImage+PDF.h"
|
||||
#import "KTFont+PDF.h"
|
||||
#import "KGFont+PDF.h"
|
||||
#import "KGMutablePath.h"
|
||||
#import "KGColor.h"
|
||||
#import "KGColorSpace+PDF.h"
|
||||
@ -643,11 +643,15 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
||||
-(void)showGlyphs:(const CGGlyph *)glyphs count:(unsigned)count {
|
||||
unsigned char bytes[count];
|
||||
|
||||
[[[self currentState] font] getMacRomanBytes:bytes forGlyphs:glyphs length:count];
|
||||
[self showText:bytes length:count];
|
||||
}
|
||||
|
||||
-(void)showText:(const char *)text length:(unsigned)length {
|
||||
[self contentWithString:@"BT "];
|
||||
|
||||
KGGraphicsState *state=[self currentState];
|
||||
KTFont *fontState=[[KTFont alloc] initWithFont:[state font] size:[state pointSize]];
|
||||
KGPDFObject *pdfObject=[fontState encodeReferenceWithContext:self];
|
||||
KGPDFObject *pdfObject=[[state font] encodeReferenceWithContext:self size:[state pointSize]];
|
||||
KGPDFObject *name=[self nameForResource:pdfObject inCategory:"Font"];
|
||||
|
||||
[self contentWithFormat:@"%@ %g Tf ",name,[[self currentState] pointSize]];
|
||||
@ -655,28 +659,10 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
||||
CGAffineTransform matrix=[self textMatrix];
|
||||
[self contentWithFormat:@"%g %g %g %g %g %g Tm ",matrix.a,matrix.b,matrix.c,matrix.d,matrix.tx,matrix.ty];
|
||||
|
||||
[fontState getBytes:bytes forGlyphs:glyphs length:count];
|
||||
[self contentPDFStringWithBytes:bytes length:count];
|
||||
[self contentPDFStringWithBytes:text length:length];
|
||||
[self contentWithString:@" Tj "];
|
||||
|
||||
[self contentWithString:@"ET "];
|
||||
[fontState release];
|
||||
}
|
||||
|
||||
-(void)showText:(const char *)text length:(unsigned)length {
|
||||
KGGraphicsState *state=[self currentState];
|
||||
KTFont *fontState=[[KTFont alloc] initWithFont:[state font] size:[state pointSize]];
|
||||
unichar unicode[length];
|
||||
CGGlyph glyphs[length];
|
||||
int i;
|
||||
|
||||
// FIX, encoding
|
||||
for(i=0;i<length;i++)
|
||||
unicode[i]=text[i];
|
||||
|
||||
[fontState getGlyphs:glyphs forCharacters:unicode length:length];
|
||||
[self showGlyphs:glyphs count:length];
|
||||
[fontState release];
|
||||
}
|
||||
|
||||
-(void)drawShading:(KGShading *)shading {
|
||||
|
@ -46,7 +46,6 @@ enum {
|
||||
-(CGPoint)positionOfGlyph:(CGGlyph)current precededByGlyph:(CGGlyph)previous isNominal:(BOOL *)isNominalp;
|
||||
|
||||
-(void)getGlyphs:(CGGlyph *)glyphs forCharacters:(const unichar *)characters length:(unsigned)length;
|
||||
-(void)getCharacters:(unichar *)characters forGlyphs:(const CGGlyph *)glyphs length:(unsigned)length;
|
||||
|
||||
-(void)getAdvancements:(CGSize *)advancements forGlyphs:(const CGGlyph *)glyphs count:(unsigned)count;
|
||||
|
||||
|
@ -116,10 +116,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
||||
}
|
||||
}
|
||||
|
||||
-(void)getCharacters:(unichar *)characters forGlyphs:(const CGGlyph *)glyphs length:(unsigned)length {
|
||||
KGInvalidAbstractInvocation();
|
||||
}
|
||||
|
||||
-(void)getAdvancements:(CGSize *)advancements forGlyphs:(const CGGlyph *)glyphs count:(unsigned)count {
|
||||
unsigned i;
|
||||
int advances[count];
|
||||
|
@ -15,19 +15,29 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
||||
typedef uint16_t unichar;
|
||||
|
||||
typedef enum {
|
||||
NSUnicodeStringEncoding,
|
||||
NSASCIIStringEncoding,
|
||||
NSNEXTSTEPStringEncoding,
|
||||
NSEUCStringEncoding,
|
||||
NSUTFStringEncoding,
|
||||
NSISOLatin1StringEncoding,
|
||||
NSSymbolStringEncoding,
|
||||
NSNonLossyASCIIStringEncoding,
|
||||
NSShiftJISStringEncoding,
|
||||
NSUTF8StringEncoding,
|
||||
NSMacOSRomanStringEncoding,
|
||||
NSUTF16BigEndianStringEncoding,
|
||||
NSUTF16LittleEndianStringEncoding
|
||||
NSASCIIStringEncoding=1,
|
||||
NSNEXTSTEPStringEncoding=2,
|
||||
NSJapaneseEUCStringEncoding=3,
|
||||
NSUTF8StringEncoding=4,
|
||||
NSISOLatin1StringEncoding=5,
|
||||
NSSymbolStringEncoding=6,
|
||||
NSNonLossyASCIIStringEncoding=7,
|
||||
NSShiftJISStringEncoding=8,
|
||||
NSISOLatin2StringEncoding=9,
|
||||
NSUnicodeStringEncoding=10,
|
||||
NSWindowsCP1251StringEncoding=11,
|
||||
NSWindowsCP1252StringEncoding=12,
|
||||
NSWindowsCP1253StringEncoding=13,
|
||||
NSWindowsCP1254StringEncoding=14,
|
||||
NSWindowsCP1250StringEncoding=15,
|
||||
NSISO2022JPStringEncoding=21,
|
||||
NSMacOSRomanStringEncoding=30,
|
||||
NSProprietaryStringEncoding=0x00010000,
|
||||
NSUTF16BigEndianStringEncoding=0x90000100,
|
||||
NSUTF16LittleEndianStringEncoding=0x94000100,
|
||||
NSUTF32StringEncoding=0x8c000100,
|
||||
NSUTF32BigEndianStringEncoding=0x98000100,
|
||||
NSUTF32LittleEndianStringEncoding=0x9c000100,
|
||||
} NSStringEncoding;
|
||||
|
||||
enum {
|
||||
@ -35,7 +45,7 @@ enum {
|
||||
NSLiteralSearch=0x02,
|
||||
NSBackwardsSearch=0x04,
|
||||
NSAnchoredSearch=0x08,
|
||||
NSNumericSearch = 0x40,
|
||||
NSNumericSearch= 0x40,
|
||||
};
|
||||
typedef NSUInteger NSStringCompareOptions;
|
||||
typedef NSUInteger NSStringEncodingConversionOptions;
|
||||
|
@ -1338,7 +1338,7 @@ U+2029 (Unicode paragraph separator), \r\n, in that order (also known as CRLF)
|
||||
|
||||
-(const char *)cStringUsingEncoding:(NSStringEncoding)encoding {
|
||||
NSUInteger length=[self length];
|
||||
unichar buffer[length];
|
||||
unichar buffer[length+1];
|
||||
|
||||
switch(encoding){
|
||||
|
||||
@ -1351,6 +1351,12 @@ U+2029 (Unicode paragraph separator), \r\n, in that order (also known as CRLF)
|
||||
}
|
||||
break;
|
||||
|
||||
case NSUnicodeStringEncoding:
|
||||
[self getCharacters:buffer];
|
||||
buffer[length]=0x0000;
|
||||
|
||||
return [[NSData dataWithBytes:buffer length:(length+1)*sizeof(unichar)] bytes];
|
||||
|
||||
default:
|
||||
NSUnimplementedMethod();
|
||||
break;
|
||||
|
@ -291,7 +291,7 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
||||
path=[NSString stringWithCharacters:buffer length:length];
|
||||
}
|
||||
|
||||
return NSNullTerminatedUnicodeFromString(path);
|
||||
return (const unichar *)[path cStringUsingEncoding:NSUnicodeStringEncoding];
|
||||
}
|
||||
|
||||
-(const char*)fileSystemRepresentationWithPath:(NSString *)path {
|
||||
|
@ -9,7 +9,6 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
|
||||
#import <Foundation/NSString.h>
|
||||
|
||||
FOUNDATION_EXPORT NSString *NSStringFromNullTerminatedUnicode(const unichar *characters);
|
||||
FOUNDATION_EXPORT const unichar *NSNullTerminatedUnicodeFromString(NSString *string);
|
||||
|
||||
FOUNDATION_EXPORT NSData *NSTaskArgumentDataFromString(NSString *string);
|
||||
FOUNDATION_EXPORT NSData *NSTaskArgumentDataFromStringW(NSString *string);
|
||||
|
@ -17,16 +17,6 @@ NSString *NSStringFromNullTerminatedUnicode(const unichar *characters) {
|
||||
return [NSString stringWithCharacters:characters length:length];
|
||||
}
|
||||
|
||||
const unichar *NSNullTerminatedUnicodeFromString(NSString *string) {
|
||||
NSUInteger length=[string length];
|
||||
unichar buffer[length+1];
|
||||
|
||||
[string getCharacters:buffer];
|
||||
buffer[length]=0x0000;
|
||||
|
||||
return [[NSData dataWithBytes:buffer length:(length+1)*sizeof(unichar)] bytes];
|
||||
}
|
||||
|
||||
NSData *NSTaskArgumentDataFromString(NSString *string) {
|
||||
NSUInteger i,length=[string length],resultLength=0;
|
||||
unichar buffer[length];
|
||||
|
Loading…
Reference in New Issue
Block a user