~jaro/balkon

ref: 397a9e427f251005c29846c94299ef5d6467d352 balkon/CHANGELOG.md -rw-r--r-- 4.1 KiB
397a9e42Jaro Fix handling of mixed line height. 11 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# Revision history for Balkón

## 1.2.0.0 -- TBD

* Fixed a bug where only the height of the shortest fragment on a line
  would be considered when positioning the following line.

* Removed `paragraphLineHeight` from the rich text interface
  after it was included by mistake.
  Rich text needs to use `textLineHeight` instead.

## 1.1.1.0 -- TBD

* Exposed functions for calculating rectangle unions.

## 1.1.0.0 -- 2023-05-31

* Updated support for bidirectional text:

    * Implemented correct order of directional runs for paragraphs whose
      base direction is RTL.

    * Numbers now create an implicit LTR embedding level.

    * The direction of weak directional characters and neutral characters is
      now determined by the embedding level of surrounding characters, or if
      that does not match, by the base paragraph direction.

    * For the legacy plain text interface, base paragraph direction is now set
      according to the first strong character.

    * Shaping uses the base paragraph direction when no strongly directional
      characters are present.

## 1.0.0.1 -- 2023-05-18

* Added another test with "shaped runs" format to allow manual testing of
  pagination.

## 1.0.0.0 -- 2023-05-15

* Added new `Data.Text.ParagraphLayout.Rich` interface to support rich text.

    * Supports multiple fonts in the same paragraph. Where line height varies,
      text will be aligned by its top edge.

    * Supports nested boxes, each with optional spacing applied to its left
      and right edge.

    * Requires user to set base text direction (LTR or RTL).

* Moved existing plain text interface into `Data.Text.ParagraphLayout.Plain`
  submodule and marked it as deprecated.

* Marked `Data.Text.ParagraphLayout.ParagraphConstruction` as deprecated.

* Input text spans can now have arbitrary user data attached to them.
  All related data types (`Paragraph`, `Span`, `Fragment`, `SpanLayout`,
  `ParagraphLayout`) have been extended with a type variable.

* Future-proofed `ParagraphOptions` and `SpanOptions` by hiding their
  constructors. Use `defaultParagraphOptions` and `defaultSpanOptions` instead.

* Added line numbers to laid out fragments.

* Added information about ancestor boxes of laid out fragments.
  The plain text interface implicitly generates one box per span, while
  the rich text interface gives the user direct control over the box hierarchy.

* Increased font size for the "shaped runs" output so that it better fits
  a window with 640 pixels of width.

* Fixed compatibility with base < 4.15.

## 0.3.0.0 -- 2023-04-13

* Added partial support for bidirectional text
  (LTR and RTL in the same paragraph).

    * The paragraph direction is assumed to be LTR.
      This will be configurable in a future interface.

    * Only strong directional characters are used to determine text direction.

    * The direction of weak directional characters and neutral characters is
      determined by the nearest preceding strong directional character, or if
      none is found, the nearest following strong directional character.

    * Explicit bidirectional formatting characters are ignored.

* Exposed functions to allow verification of correct input text slicing:
  `paragraphSpanBounds`, `paragraphSpanTexts`, and `paragraphText`.

## 0.2.1.0 -- 2023-04-04

* Added pagination.

## 0.2.0.0 -- 2023-03-28

* Added support for forced (hard) line breaks in the input text.

* Now also trimming white space at the beginning of lines.

* Internally, language tags will be cut at the first invalid character before
  being passed to ICU.

* Tests will generate output in "shaped runs" format which can be passed to
  a text rendering application.

## 0.1.0.0 -- 2023-03-13

* Text shaping using HarfBuzz.

* Breaking text on line and character boundaries using the International
  Components for Unicode (ICU) library.

* Trimming white space at the end of lines.

* Calculation of containing block bounds and fragment bounds.

* Support for plain text (single font and line height) in one horizontal
  direction (LTR or RTL).

* Input can be divided into spans. This division will be preserved in the
  output.

* Each span can use a different language for text shaping and line breaking.