Und es geht munter weiter... CoreText Merkwürdigkeiten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • gritsch schrieb:

    Amin Negm-Awad schrieb:

    Moment mal. Die Zeilenhöhe ist keine Frage desFonts. Wie gesagt ist die größer als die Zeichenhöhe.


    woher hast du den schmarrn schon wieder?

    Aus der Doku undmeiner Arbeit.


    Übrigens unterscheidet jede noch so popelige Textverarbeitung zwischen Zeichenhöhe und Zeilenhöhe.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • gritsch schrieb:

    Thallius schrieb:

    gritsch schrieb:

    Amin Negm-Awad schrieb:

    Moment mal. Die Zeilenhöhe ist keine Frage desFonts. Wie gesagt ist die größer als die Zeichenhöhe.


    woher hast du den schmarrn schon wieder?


    Es wäre schön wenn ihr hier ausnahmsweise mal nicht euren Privatkrieg ausfechtet, sondern sachlich bleibt damit ich mir nicht gleich wieder 1000 Posts durchlesen muss wo ihr nur gegenseitig aufeinander eindrescht.

    Danke

    Claus


    es ist sachlich. die zeilenhöhe häng von den verwendeten fonts ab. der absatz kann dann noch was dazu tun oder ein maximum oder minimum definieren. aber die zeilenhöhe an sich gibt der font an (ascender+descender+leading)

    Cool, dann gibt es also keinen zweizeiligen Satz bei gleichem Font. Cool. Das erfinde ich dann jetzt einmal.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Amin Negm-Awad schrieb:

    gritsch schrieb:

    Amin Negm-Awad schrieb:

    Moment mal. Die Zeilenhöhe ist keine Frage desFonts. Wie gesagt ist die größer als die Zeichenhöhe.


    woher hast du den schmarrn schon wieder?

    Aus der Doku undmeiner Arbeit.


    Übrigens unterscheidet jede noch so popelige Textverarbeitung zwischen Zeichenhöhe und Zeilenhöhe.


    und wo ist die doku?

    klar aber die zeilenhöhe hängt vor allem von der font ab. ob die dann 150% größer gemacht wird oder um 6px oder oder oder ist dann eine andere sache. aber die berechnugnsbasis kommt von den fonts!
  • Amin Negm-Awad schrieb:

    gritsch schrieb:

    Thallius schrieb:

    gritsch schrieb:

    Amin Negm-Awad schrieb:

    Moment mal. Die Zeilenhöhe ist keine Frage desFonts. Wie gesagt ist die größer als die Zeichenhöhe.


    woher hast du den schmarrn schon wieder?


    Es wäre schön wenn ihr hier ausnahmsweise mal nicht euren Privatkrieg ausfechtet, sondern sachlich bleibt damit ich mir nicht gleich wieder 1000 Posts durchlesen muss wo ihr nur gegenseitig aufeinander eindrescht.

    Danke

    Claus


    es ist sachlich. die zeilenhöhe häng von den verwendeten fonts ab. der absatz kann dann noch was dazu tun oder ein maximum oder minimum definieren. aber die zeilenhöhe an sich gibt der font an (ascender+descender+leading)

    Cool, dann gibt es also keinen zweizeiligen Satz bei gleichem Font. Cool. Das erfinde ich dann jetzt einmal.


    hä?
  • gritsch schrieb:

    Amin Negm-Awad schrieb:

    gritsch schrieb:

    Amin Negm-Awad schrieb:

    Moment mal. Die Zeilenhöhe ist keine Frage desFonts. Wie gesagt ist die größer als die Zeichenhöhe.


    woher hast du den schmarrn schon wieder?

    Aus der Doku undmeiner Arbeit.


    Übrigens unterscheidet jede noch so popelige Textverarbeitung zwischen Zeichenhöhe und Zeilenhöhe.


    und wo ist die doku?

    klar aber die zeilenhöhe hängt vor allem von der font ab. ob die dann 150% größer gemacht wird oder um 6px oder oder oder ist dann eine andere sache. aber die berechnugnsbasis kommt von den fonts!

    Genau …
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Amin Negm-Awad schrieb:

    gritsch schrieb:

    Amin Negm-Awad schrieb:

    gritsch schrieb:

    Amin Negm-Awad schrieb:

    Moment mal. Die Zeilenhöhe ist keine Frage desFonts. Wie gesagt ist die größer als die Zeichenhöhe.


    woher hast du den schmarrn schon wieder?

    Aus der Doku undmeiner Arbeit.


    Übrigens unterscheidet jede noch so popelige Textverarbeitung zwischen Zeichenhöhe und Zeilenhöhe.


    und wo ist die doku?

    klar aber die zeilenhöhe hängt vor allem von der font ab. ob die dann 150% größer gemacht wird oder um 6px oder oder oder ist dann eine andere sache. aber die berechnugnsbasis kommt von den fonts!

    Genau …


    zeigt doch den abschnitt in der doku!?

    oder beleg es!
  • "aber die zeilenhöhe an sich gibt der font an (ascender+descender+leading)"

    Das leading des Absatzformats lässt sich unabhängig vom Font bestimmen:
    developer.apple.com/library/ma…/Reference/Reference.html
    "lineSpacing
    Returns the space between lines in the receiver (commonly known as leading)."
    Das steht bei NSParagraphStyle.

    Das Leading des Fonts hat damit nichts zu tun. Vielleicht wird es gerade mal als Default oder Minimum verwendet. Der Zeilenabstand bestimmt sich aber aus dem Leading des Paragraphformates und nicht aus dem Leading des Fonts.

    Und ab jetzt suchst du wieder selbst in der Doku. Ich kann dir ja nun nicht auch noch alles vorlesen.

    Und deshalb kann jedes noch so mickrige Textsystem auch bei gleichem Font unterschiedliche Zeilenabstände haben. Dazu muss mannicht einmal programmieren können. Das weiß meine Sekretärin.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Amin Negm-Awad schrieb:

    Das leading des Absatzformats lässt sich unabhängig vom Font bestimmen:
    developer.apple.com/library/ma…/Reference/Reference.html
    "lineSpacing
    Returns the space between lines in the receiver (commonly known as leading)."
    Das steht bei NSParagraphStyle.

    Das Leading des Fonts hat damit nichts zu tun. Vielleicht wird es gerade mal als Default oder Minimum verwendet. Der Zeilenabstand bestimmt sich aber aus dem Leading des Paragraphformates und nicht aus dem Leading des Fonts.

    Und ab jetzt suchst du wieder selbst in der Doku. Ich kann dir ja nun nicht auch noch alles vorlesen.


    dieses leading ist wieder was anderes.
    die zeilenhöhe berechnet sich aus ascender+descender+leading.
    dann kommt noch das leading vom ParagraphStyle hinzu (und die höhe wird eventuell aufs minimum raufgesetzt oder aufs maximum runter falls das angegeben ist).
    aber die zeilenhöhe ergibt sich aus der font.

    verwende doch mal 2 verschiedene fonts mit den selben Paragraph-einstellungen. Zb Helvetica und Zapfino. die zapfino hat eine 3 mal so hohe zeilenhöhe (bei gleicher schriftgröße natürlich)
  • gritsch schrieb:

    Amin Negm-Awad schrieb:

    Das leading des Absatzformats lässt sich unabhängig vom Font bestimmen:
    developer.apple.com/library/ma…/Reference/Reference.html
    "lineSpacing
    Returns the space between lines in the receiver (commonly known as leading)."
    Das steht bei NSParagraphStyle.

    Das Leading des Fonts hat damit nichts zu tun. Vielleicht wird es gerade mal als Default oder Minimum verwendet. Der Zeilenabstand bestimmt sich aber aus dem Leading des Paragraphformates und nicht aus dem Leading des Fonts.

    Und ab jetzt suchst du wieder selbst in der Doku. Ich kann dir ja nun nicht auch noch alles vorlesen.


    dieses leading ist wieder was anderes.
    die zeilenhöhe berechnet sich aus ascender+descender+leading.
    dann kommt noch das leading vom ParagraphStyle hinzu (und die höhe wird eventuell aufs minimum raufgesetzt oder aufs maximum runter falls das angegeben ist).
    aber die zeilenhöhe ergibt sich aus der font.

    verwende doch mal 2 verschiedene fonts mit den selben Paragraph-einstellungen. Zb Helvetica und Zapfino. die zapfino hat eine 3 mal so hohe zeilenhöhe (bei gleicher schriftgröße natürlich)


    Das ist was anderes und es berechnet sich nicht daraus, aber es kommt noch hinzu.

    Genau.

    Und sein Problem ist nicht, dass neben dem errechneten noch 3 Pixel hinzukommen? Woher kommen die drei Pixel fragt er sich? Da antwortest du, aus dem Font. Ach, ne, da kommt ja noch was hinzu. Vielleicht das, was hinzukommt. Was war das gleich noch?

    Du bist wirklich exorbitant ignorant.

    Danke für die Diskussion.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • gritsch schrieb:

    Amin Negm-Awad schrieb:

    Und deshalb kann jedes noch so mickrige Textsystem auch bei gleichem Font unterschiedliche Zeilenabstände haben. Dazu muss mannicht einmal programmieren können. Das weiß meine Sekretärin.


    das ist jetzt aber auch ganz was anderes. ich hab ja gesagt dass du die zeilenhöhe durchs textsystem VERÄNDERN kannst, aber die basisgröße kommt immer vom font!

    Seine Größe utnerscheidet sich um 3 px vom der des Fonts.

    Woher kommt das?

    [ ] Vom Font
    [ ] Vom Absatz
    [x] Keine Ahnung
    [x] Gar keine Ahnung
    [x] Völlig gar keine Ahnung
    [ ] Menno, menno, menno, vom Font.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Amin Negm-Awad schrieb:

    gritsch schrieb:

    Amin Negm-Awad schrieb:

    Das leading des Absatzformats lässt sich unabhängig vom Font bestimmen:
    developer.apple.com/library/ma…/Reference/Reference.html
    "lineSpacing
    Returns the space between lines in the receiver (commonly known as leading)."
    Das steht bei NSParagraphStyle.

    Das Leading des Fonts hat damit nichts zu tun. Vielleicht wird es gerade mal als Default oder Minimum verwendet. Der Zeilenabstand bestimmt sich aber aus dem Leading des Paragraphformates und nicht aus dem Leading des Fonts.

    Und ab jetzt suchst du wieder selbst in der Doku. Ich kann dir ja nun nicht auch noch alles vorlesen.


    dieses leading ist wieder was anderes.
    die zeilenhöhe berechnet sich aus ascender+descender+leading.
    dann kommt noch das leading vom ParagraphStyle hinzu (und die höhe wird eventuell aufs minimum raufgesetzt oder aufs maximum runter falls das angegeben ist).
    aber die zeilenhöhe ergibt sich aus der font.

    verwende doch mal 2 verschiedene fonts mit den selben Paragraph-einstellungen. Zb Helvetica und Zapfino. die zapfino hat eine 3 mal so hohe zeilenhöhe (bei gleicher schriftgröße natürlich)


    Das ist was anderes und es berechnet sich nicht daraus, aber es kommt noch hinzu.

    Genau.

    Und sein Problem ist nicht, dass neben dem errechneten noch 3 Pixel hinzukommen? Woher kommen die drei Pixel fragt er sich? Da antwortest du, aus dem Font. Ach, ne, da kommt ja noch was hinzu. Vielleicht das, was hinzukommt. Was war das gleich noch?

    Du bist wirklich exorbitant ignorant.

    Danke für die Diskussion.


    das hab ich nie gesagt dass die 3 pixel aus dem font kommen. genau umgekehrt sogar!
  • Amin Negm-Awad schrieb:

    gritsch schrieb:

    Amin Negm-Awad schrieb:

    Und deshalb kann jedes noch so mickrige Textsystem auch bei gleichem Font unterschiedliche Zeilenabstände haben. Dazu muss mannicht einmal programmieren können. Das weiß meine Sekretärin.


    das ist jetzt aber auch ganz was anderes. ich hab ja gesagt dass du die zeilenhöhe durchs textsystem VERÄNDERN kannst, aber die basisgröße kommt immer vom font!

    Seine Größe utnerscheidet sich um 3 px vom der des Fonts.

    Woher kommt das?

    [ ] Vom Font
    [ ] Vom Absatz
    [x] Keine Ahnung
    [x] Gar keine Ahnung
    [x] Völlig gar keine Ahnung
    [ ] Menno, menno, menno, vom Font.


    die 3 pixel kommen vom absatz oder einem "unbekannten feature" (bzw bug) in CTFrame.
    aber es ging hier nie um die 3 pixel!
    es geht hier einzig darum dass du geschrieben hast "Die Zeilenhöhe ist keine Frage desFonts." und das stimmt nun mal nicht.

    so, und jetzt muss ich weg. der berg ruft.
  • Zwischendurch mal was konstruktives mit einer möglichen Lösung:

    PHP-Quellcode

    1. // Drawing code.
    2. CGContextRef context=UIGraphicsGetCurrentContext();
    3. CGContextSetTextMatrix(context, CGAffineTransformMakeScale(1.0,-1.0));
    4. CGRect bounds = CGRectMake(10.0, 10.0, 300.0, 200.0);
    5. // Initialize an attributed string.
    6. CFStringRef string = CFSTR("We hold this truth to be self-evident, that everyone is created equal.");
    7. CFMutableAttributedStringRef attrString = CFAttributedStringCreateMutable(kCFAllocatorDefault, 0);
    8. CFAttributedStringReplaceString (attrString, CFRangeMake(0, 0), string);
    9. // Create a color and add it as an attribute to the string.
    10. CGColorSpaceRef rgbColorSpace = CGColorSpaceCreateDeviceRGB();
    11. CGFloat components[] = { 1.0, 0.0, 0.0, 0.8 };
    12. CGColorRef red = CGColorCreate(rgbColorSpace, components);
    13. CGColorSpaceRelease(rgbColorSpace);
    14. CFAttributedStringSetAttribute(attrString, CFRangeMake(0, 50), kCTForegroundColorAttributeName, red);
    15. // Create a typesetter using the attributed string.
    16. CTTypesetterRef typesetter = CTTypesetterCreateWithAttributedString(attrString);
    17. CFIndex start = 0;
    18. while (start < CFAttributedStringGetLength(attrString))
    19. {
    20. // Find a break for line from the beginning of the string to the given width.
    21. double width = bounds.size.width;
    22. CFIndex count = CTTypesetterSuggestLineBreak(typesetter, start, width);
    23. // Use the returned character count (to the break) to create the line.
    24. CTLineRef line = CTTypesetterCreateLine(typesetter, CFRangeMake(start, count));
    25. // Calculate ascent, descent and leading
    26. CGFloat ascent;
    27. CGFloat descent;
    28. CGFloat leading;
    29. CTLineGetTypographicBounds(line, &ascent, &descent, &leading);
    30. // Add the ascent
    31. bounds.origin.y += ascent;
    32. // Move the given text drawing position and draw the line.
    33. CGContextSetTextPosition(context, bounds.origin.x, bounds.origin.y);
    34. CTLineDraw(line, context);
    35. // Move the index beyond the line break.
    36. start += count;
    37. // Add descent and leading
    38. bounds.origin.y += descent + leading;
    39. }
    Alles anzeigen

    Die width für jede Zeile muss Du dann noch Deinen Bedürfnissen anpassen.
  • Muuuuahahahahaha, du bist echt der Knaller.

    Wolltest du nicht die Höhe des Fonts nehmen? Und hat Thallius das nicht probiert und scheiterte damit?

    Und nimmt MCDan nicht die Höhe des Setters?

    Sag mal wenn die Zeilenhöhe doch die Fonthöhe ist, wie ist das dann eigentlich, wenn unterschiedlich große Fonts in einer Zeile sind?
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Amin Negm-Awad schrieb:

    Muuuuahahahahaha, du bist echt der Knaller.

    Wolltest du nicht die Höhe des Fonts nehmen? Und hat Thallius das nicht probiert und scheiterte damit?

    Und nimmt MCDan nicht die Höhe des Setters?

    Sag mal wenn die Zeilenhöhe doch die Fonthöhe ist, wie ist das dann eigentlich, wenn unterschiedlich große Fonts in einer Zeile sind?


    du bist der knaller!

    ich habe nie gesagt dass ich die höhe des fonts nehmen will sondern nur dass die zeilenhöhe IMMER vom font abhängt. ob der typesetter bzw der paragrpahstyle da drin dann noch was dazutun, ein amximum definieren oder nicht ist ja komplett eine andere geschichte.

    MCDan verwendet zur berechnung der zeilenhöhe den ascender, descender und leading. woher glaubst du kommen die infos (wenn nicht aus den enthaltenen fonts)? dass die (zumindest das leading) vom typesetter verändert werden KÖNNEN habe ich ja nie abgestritten ;)

    wenn verschiedene fonts bzw fontgrößen in einer zeile sind dann wird natürlich die größte verwendeet. bzw die summe aus größtem ascender und größtem (descender + leading). gezeichnet wird immer ausgehend von der baseline (ascender+leading)

    du redest echt nur müll hier!