mirror of
https://github.com/kovidgoyal/kitty
synced 2026-07-19 15:04:50 +02:00
Fix crash on CoreText for very large font sizes
This commit is contained in:
@@ -492,7 +492,7 @@ cell_metrics(PyObject *s, unsigned int* cell_width, unsigned int* cell_height, u
|
|||||||
CFAttributedStringReplaceString(test_string, CFRangeMake(0, 0), ts);
|
CFAttributedStringReplaceString(test_string, CFRangeMake(0, 0), ts);
|
||||||
CFAttributedStringSetAttribute(test_string, CFRangeMake(0, CFStringGetLength(ts)), kCTFontAttributeName, self->ct_font);
|
CFAttributedStringSetAttribute(test_string, CFRangeMake(0, CFStringGetLength(ts)), kCTFontAttributeName, self->ct_font);
|
||||||
CGMutablePathRef path = CGPathCreateMutable();
|
CGMutablePathRef path = CGPathCreateMutable();
|
||||||
CGPathAddRect(path, NULL, CGRectMake(10, 10, 200, 200));
|
CGPathAddRect(path, NULL, CGRectMake(10, 10, 200, 8000));
|
||||||
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString(test_string);
|
CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString(test_string);
|
||||||
CFRelease(test_string);
|
CFRelease(test_string);
|
||||||
CTFrameRef test_frame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), path, NULL);
|
CTFrameRef test_frame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), path, NULL);
|
||||||
@@ -501,6 +501,7 @@ cell_metrics(PyObject *s, unsigned int* cell_width, unsigned int* cell_height, u
|
|||||||
CTFrameGetLineOrigins(test_frame, CFRangeMake(1, 1), &origin2);
|
CTFrameGetLineOrigins(test_frame, CFRangeMake(1, 1), &origin2);
|
||||||
CGFloat line_height = origin1.y - origin2.y;
|
CGFloat line_height = origin1.y - origin2.y;
|
||||||
CFArrayRef lines = CTFrameGetLines(test_frame);
|
CFArrayRef lines = CTFrameGetLines(test_frame);
|
||||||
|
if (!CFArrayGetCount(lines)) fatal("Failed to typeset test line to calculate cell metrics");
|
||||||
CTLineRef line = CFArrayGetValueAtIndex(lines, 0);
|
CTLineRef line = CFArrayGetValueAtIndex(lines, 0);
|
||||||
CGRect bounds = CTLineGetBoundsWithOptions(line, 0);
|
CGRect bounds = CTLineGetBoundsWithOptions(line, 0);
|
||||||
CGRect bounds_without_leading = CTLineGetBoundsWithOptions(line, kCTLineBoundsExcludeTypographicLeading);
|
CGRect bounds_without_leading = CTLineGetBoundsWithOptions(line, kCTLineBoundsExcludeTypographicLeading);
|
||||||
|
|||||||
Reference in New Issue
Block a user