# HG changeset patch # User Kenichi Handa # Date 1282715895 -32400 # Node ID 35753506eda59df868e703191bf10c881ac2ee03 # Parent 26e31bcc4b0602a06d245a3d7c97c4e4a8a43aef fontset.c (reorder_font_vector): Prefer a font-spec specifying :otf. diff -r 26e31bcc4b06 -r 35753506eda5 src/ChangeLog --- a/src/ChangeLog Wed Aug 25 13:39:30 2010 +0900 +++ b/src/ChangeLog Wed Aug 25 14:58:15 2010 +0900 @@ -1,5 +1,8 @@ 2010-08-25 Kenichi Handa + * fontset.c (reorder_font_vector): Prefer a font-spec specifying + :otf. + * composite.c (composition_compute_stop_pos): Don't break composition at PT. (composition_reseat_it): Likewise. Fix calculation of character diff -r 26e31bcc4b06 -r 35753506eda5 src/fontset.c --- a/src/fontset.c Wed Aug 25 13:39:30 2010 +0900 +++ b/src/fontset.c Wed Aug 25 14:58:15 2010 +0900 @@ -283,6 +283,10 @@ #define RFONT_DEF_OBJECT(rfont_def) AREF (rfont_def, 2) #define RFONT_DEF_SET_OBJECT(rfont_def, object) \ ASET ((rfont_def), 2, (object)) +/* Score of RFONT_DEF is an integer value; the lowest 8 bits represent + the order of listing by font backends, the higher bits represents + the order given by charset priority list. The smaller value is + preferable. */ #define RFONT_DEF_SCORE(rfont_def) XINT (AREF (rfont_def, 3)) #define RFONT_DEF_SET_SCORE(rfont_def, score) \ ASET ((rfont_def), 3, make_number (score)) @@ -412,8 +416,13 @@ Lisp_Object font_def = RFONT_DEF_FONT_DEF (rfont_def); Lisp_Object font_spec = FONT_DEF_SPEC (font_def); int score = RFONT_DEF_SCORE (rfont_def) & 0xFF; + Lisp_Object otf_spec = Ffont_get (font_spec, QCotf); - if (! font_match_p (font_spec, font_object)) + if (! NILP (otf_spec)) + /* A font-spec with :otf is preferable regardless of encoding + and language.. */ + ; + else if (! font_match_p (font_spec, font_object)) { Lisp_Object encoding = FONT_DEF_ENCODING (font_def);