Feat/font autoscale (#288)

* PoC font autosize feature

* Take enumerables or 'auto' keyword for autoscaling

* Allo enumerables of font_size per card, where the largest font size that does not ellipsize is chosen

* Use ellipsize: :autoscale keyword to determine font autosizing

* Use binary search to find the correct font size

* Consider new ellipsize option in testcase

* Document ellipsize: :autoscale option

* Add ellipsize: :autoscale sample to text sample

* Fix double multiplication with Pango::SCALE

* Scale embedded images with text when autoscaling

* Remove stray semicolon

* Return dummy value for FontDescription.size in mock_cairo

* Update regression test data for autoscale feature.

* Add ellipsize: :autoscale example to existing font_autoscale sample

* Add missing :autoscale to list of options in documentation
This commit is contained in:
Mirko K
2019-10-17 11:29:14 -04:00
committed by Andy Meneely
parent 43cca582a6
commit 6d57b3e8c1
28 changed files with 1161 additions and 187 deletions
+8
View File
@@ -304,6 +304,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -323,6 +324,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -342,6 +344,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -361,6 +364,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -380,6 +384,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -399,6 +404,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -418,6 +424,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -437,6 +444,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: translate([2193.75, 2193.75])
cairo: rotate([-0.7853981633974483])
@@ -20,6 +20,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: rounded_rectangle([0, 0, 805, 1105, 15, 15])
cairo: clip([])
@@ -49,6 +50,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: translate([387.5, 537.5])
cairo: rotate([1.5707963267948966])
+16
View File
@@ -350,6 +350,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -367,6 +368,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -384,6 +386,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -401,6 +404,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -418,6 +422,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -435,6 +440,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -452,6 +458,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -469,6 +476,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -486,6 +494,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -503,6 +512,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -520,6 +530,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -537,6 +548,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -554,6 +566,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -571,6 +584,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -588,6 +602,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -605,6 +620,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
surface: write_to_png(["_output/save_png_00.png"])
cairo: rounded_rectangle([0, 0, 765, 1065, 38, 38])
+4
View File
@@ -99,6 +99,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -117,6 +118,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -135,6 +137,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])
@@ -153,6 +156,7 @@ cairo: move_to([0, 0])
cairo: move_to([0, 0])
cairo: show_pango_layout([MockDouble])
pango: ellipsized?([])
pango: ellipsized?([])
cairo: restore([])
cairo: save([])
cairo: new_path([])