본문으로 건너뛰기
토파즈6.0 · 출시 전
다운로드 →

문서 검색

명세 6.0

방향키로 결과를 고르고 Enter를 눌러 여세요.

API 이름, 진단 번호, 규칙 또는 프로젝트 주제를 입력하세요.

    라이브러리 · std.typeset

    LineGeometry.dropCapSpan

    Count the first lines receiving a drop cap inset.

    LineGeometry.dropCapSpan: int
    수신자
    LineGeometry
    최소 인자 수
    0
    최대 인자 수
    0

    Declaration and parameters

    링크

    사용 조건

    기본 포함 · 미정

    Import std.typeset in language mode 5.21.

    The current compiler selects std/typeset.tpz for this language mode. Availability in other released editions and inclusion in each installed distribution are Pending.

    수신자

    LineGeometry

    매개변수 제약

    LineGeometry.bodyTarget and firstTarget are positive Length<Pt> distances that remain positive after conversion to the selected grid. The line beginning at unit zero uses firstTarget. Each later line uses bodyTarget.

    dropCapSpan is an integer from zero through three. dropCapInset is a nonnegative Length<Pt>. When both are positive, subtract the inset from the first dropCapSpan line targets. A zero span or zero inset leaves the base targets unchanged.

    An active inset must be smaller than both firstTarget and bodyTarget after quantization. A nonpositive base target, span outside zero through three, negative inset, or inset that consumes a target returns TypesetError.InvalidPolicy before item validation.

    PlanLine.target reports the resulting physical target after the first line choice, quantization, and any inset. Geometry selects the available width and does not alter source unit indices or measured text widths.

    결과

    The declared result type is int.

    효과

    실패

    Result and effects

    링크

    Select this field from a value of its named type without call parentheses.

    Use an int from zero through three. Zero disables the inset. Positive values apply dropCapInset to that many output lines when the inset is positive.

    Why

    링크

    One geometry record describes first line indentation and the finite span of a drop cap. Checking effective targets before searching prevents different search paths from assigning different meanings to unusable widths.

    Resolved contracts

    링크

    Related entries

    링크

    std.typeset →

    Compute each line target from one geometry

    링크
    규칙topaz.stdlib.contract.typeset-line-geometry.rule

    Compute each line target from one geometry

    LineGeometry.bodyTarget and firstTarget are positive Length<Pt> distances that remain positive after conversion to the selected grid. The line beginning at unit zero uses firstTarget. Each later line uses bodyTarget.

    dropCapSpan is an integer from zero through three. dropCapInset is a nonnegative Length<Pt>. When both are positive, subtract the inset from the first dropCapSpan line targets. A zero span or zero inset leaves the base targets unchanged.

    An active inset must be smaller than both firstTarget and bodyTarget after quantization. A nonpositive base target, span outside zero through three, negative inset, or inset that consumes a target returns TypesetError.InvalidPolicy before item validation.

    PlanLine.target reports the resulting physical target after the first line choice, quantization, and any inset. Geometry selects the available width and does not alter source unit indices or measured text widths.

    이유

    One geometry record describes first line indentation and the finite span of a drop cap. Checking effective targets before searching prevents different search paths from assigning different meanings to unusable widths.

    Apply the first target and drop cap inset in line order

    링크
    main.tpzApply the first target and drop cap inset in line order플레이그라운드 열기 →
    1. import std.typeset as ts
    2. import std.io
    3. let items: Array<ts.Item> = [
    4. ts.Item.BoxItem(ts.Box { unitIndex: 0, text: "a", width: 3pt, trackingAfter: 0pt }),
    5. ts.Item.PenaltyItem(ts.Penalty { unitEnd: 1, width: 0pt, rule: ts.BreakRule.Forced(), kind: ts.BreakKind.ForcedEnd(), flagged: false }),
    6. ts.Item.BoxItem(ts.Box { unitIndex: 1, text: "a", width: 3pt, trackingAfter: 0pt }),
    7. ts.Item.PenaltyItem(ts.Penalty { unitEnd: 2, width: 0pt, rule: ts.BreakRule.Forced(), kind: ts.BreakKind.ForcedEnd(), flagged: false })
    8. ]
    9. let input = ts.Paragraph {
    10. grid: ts.DistanceGrid.MilliPoint(),
    11. items: items,
    12. geometry: ts.LineGeometry { bodyTarget: 10pt, firstTarget: 8pt, dropCapSpan: 1, dropCapInset: 2pt },
    13. justification: ts.JustificationPolicy {
    14. mode: ts.JustificationMode.Unjustified(), minGapCount: 0,
    15. minLineWidthRatioM: 0, minFinalLineWidthRatioM: None(),
    16. maxAdjustment: 0pt, maxGapAdjustment: 0pt, maxGapRatioR: 0,
    17. latinSpacing: None(), cjkStretchRatio: 0.0
    18. },
    19. costModel: ts.CostModel.FixedPoint(),
    20. knuthPlass: ts.KnuthPlassPolicy { toleranceR: 100000000, linePenalty: 10, fitnessDemerit: 0, flaggedDemerit: 0, finalFlaggedDemerit: 0 }
    21. }
    22. match (ts.breakParagraph(input)) {
    23. case Ok(result) => {
    24. let first = result.optimized.lines[0]
    25. let second = result.optimized.lines[1]
    26. io.writeLine("{first.target == 6pt} {second.target == 10pt}")
    27. }
    28. case Err(_) => io.writeLine("unexpected error")
    29. }
    기대 출력종료 코드 0
    true true
    
    $ topaz run main.tpz · 대상 제품 5.21.3
    기대 결과

    기대 결과

    실행을 마칩니다. 종료 코드 0.

    기대 표준 출력
    1. true true

    Reject a zero line target before planning

    링크
    main.tpzReject a zero line target before planning플레이그라운드 열기 →
    1. import std.typeset as ts
    2. import std.io
    3. let items: Array<ts.Item> = [
    4. ts.Item.BoxItem(ts.Box { unitIndex: 0, text: "a", width: 1pt, trackingAfter: 0pt }),
    5. ts.Item.PenaltyItem(ts.Penalty { unitEnd: 1, width: 0pt, rule: ts.BreakRule.Forced(), kind: ts.BreakKind.ForcedEnd(), flagged: false })
    6. ]
    7. let input = ts.Paragraph {
    8. grid: ts.DistanceGrid.MilliPoint(),
    9. items: items,
    10. geometry: ts.LineGeometry { bodyTarget: 0pt, firstTarget: 0pt, dropCapSpan: 0, dropCapInset: 0pt },
    11. justification: ts.JustificationPolicy {
    12. mode: ts.JustificationMode.Unjustified(), minGapCount: 0,
    13. minLineWidthRatioM: 0, minFinalLineWidthRatioM: None(),
    14. maxAdjustment: 0pt, maxGapAdjustment: 0pt, maxGapRatioR: 0,
    15. latinSpacing: None(), cjkStretchRatio: 0.0
    16. },
    17. costModel: ts.CostModel.FixedPoint(),
    18. knuthPlass: ts.KnuthPlassPolicy { toleranceR: 100000000, linePenalty: 10, fitnessDemerit: 0, flaggedDemerit: 0, finalFlaggedDemerit: 0 }
    19. }
    20. match (ts.breakParagraph(input)) {
    21. case Err(InvalidPolicy(_)) => io.writeLine("InvalidPolicy")
    22. case _ => io.writeLine("unexpected result")
    23. }
    기대 출력종료 코드 0
    InvalidPolicy
    
    $ topaz run main.tpz · 대상 제품 5.21.3
    기대 결과

    기대 결과

    실행을 마칩니다. 종료 코드 0.

    기대 표준 출력
    1. InvalidPolicy

    Reject a negative drop cap inset

    링크
    main.tpzReject a negative drop cap inset플레이그라운드 열기 →
    1. import std.typeset as ts
    2. import std.io
    3. let items: Array<ts.Item> = [
    4. ts.Item.BoxItem(ts.Box { unitIndex: 0, text: "a", width: 1pt, trackingAfter: 0pt }),
    5. ts.Item.PenaltyItem(ts.Penalty { unitEnd: 1, width: 0pt, rule: ts.BreakRule.Forced(), kind: ts.BreakKind.ForcedEnd(), flagged: false })
    6. ]
    7. let input = ts.Paragraph {
    8. grid: ts.DistanceGrid.MilliPoint(),
    9. items: items,
    10. geometry: ts.LineGeometry { bodyTarget: 10pt, firstTarget: 10pt, dropCapSpan: 1, dropCapInset: -1pt },
    11. justification: ts.JustificationPolicy {
    12. mode: ts.JustificationMode.Unjustified(), minGapCount: 0,
    13. minLineWidthRatioM: 0, minFinalLineWidthRatioM: None(),
    14. maxAdjustment: 0pt, maxGapAdjustment: 0pt, maxGapRatioR: 0,
    15. latinSpacing: None(), cjkStretchRatio: 0.0
    16. },
    17. costModel: ts.CostModel.FixedPoint(),
    18. knuthPlass: ts.KnuthPlassPolicy { toleranceR: 100000000, linePenalty: 10, fitnessDemerit: 0, flaggedDemerit: 0, finalFlaggedDemerit: 0 }
    19. }
    20. match (ts.breakParagraph(input)) {
    21. case Err(InvalidPolicy(_)) => io.writeLine("InvalidPolicy")
    22. case _ => io.writeLine("unexpected result")
    23. }
    기대 출력종료 코드 0
    InvalidPolicy
    
    $ topaz run main.tpz · 대상 제품 5.21.3
    기대 결과

    기대 결과

    실행을 마칩니다. 종료 코드 0.

    기대 표준 출력
    1. InvalidPolicy

    메뉴

    다운로드 →