Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(9)

Side by Side Diff: third_party/WebKit/Source/platform/fonts/shaping/HarfBuzzShaper.h

Issue 1806363002: Revert of Shape unicode-range: font faces in only one iteration (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 #include "wtf/text/CharacterNames.h" 46 #include "wtf/text/CharacterNames.h"
47 47
48 #include <unicode/uscript.h> 48 #include <unicode/uscript.h>
49 49
50 namespace blink { 50 namespace blink {
51 51
52 class Font; 52 class Font;
53 class GlyphBuffer; 53 class GlyphBuffer;
54 class SimpleFontData; 54 class SimpleFontData;
55 class HarfBuzzShaper; 55 class HarfBuzzShaper;
56 class UnicodeRangeSet;
57 56
58 // Shaping text runs is split into several stages: Run segmentation, shaping the 57 // Shaping text runs is split into several stages: Run segmentation, shaping the
59 // initial segment, identify shaped and non-shaped sequences of the shaping 58 // initial segment, identify shaped and non-shaped sequences of the shaping
60 // result, and processing sub-runs by trying to shape them with a fallback font 59 // result, and processing sub-runs by trying to shape them with a fallback font
61 // until the last resort font is reached. 60 // until the last resort font is reached.
62 // 61 //
63 // Going through one example to illustrate the process: The following is a run o f 62 // Going through one example to illustrate the process: The following is a run o f
64 // vertical text to be shaped. After run segmentation in RunSegmenter it is spli t 63 // vertical text to be shaped. After run segmentation in RunSegmenter it is spli t
65 // into 4 segments. The segments indicated by the segementation results showing 64 // into 4 segments. The segments indicated by the segementation results showing
66 // the script, orientation information and small caps handling of the individual 65 // the script, orientation information and small caps handling of the individual
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 private: 155 private:
157 void setFontFeatures(); 156 void setFontFeatures();
158 157
159 void appendToHolesQueue(HolesQueueItemAction, 158 void appendToHolesQueue(HolesQueueItemAction,
160 unsigned startIndex, 159 unsigned startIndex,
161 unsigned numCharacters); 160 unsigned numCharacters);
162 inline bool shapeRange(hb_buffer_t* harfBuzzBuffer, 161 inline bool shapeRange(hb_buffer_t* harfBuzzBuffer,
163 unsigned startIndex, 162 unsigned startIndex,
164 unsigned numCharacters, 163 unsigned numCharacters,
165 const SimpleFontData* currentFont, 164 const SimpleFontData* currentFont,
166 PassRefPtr<UnicodeRangeSet> currentFontRangeSet, 165 unsigned currentFontRangeFrom,
166 unsigned currentFontRangeTo,
167 UScriptCode currentRunScript, 167 UScriptCode currentRunScript,
168 hb_language_t); 168 hb_language_t);
169 bool extractShapeResults(hb_buffer_t* harfBuzzBuffer, 169 bool extractShapeResults(hb_buffer_t* harfBuzzBuffer,
170 ShapeResult*, 170 ShapeResult*,
171 bool& fontCycleQueued, 171 bool& fontCycleQueued,
172 const HolesQueueItem& currentQueueItem, 172 const HolesQueueItem& currentQueueItem,
173 const SimpleFontData* currentFont, 173 const SimpleFontData* currentFont,
174 UScriptCode currentRunScript, 174 UScriptCode currentRunScript,
175 bool isLastResort); 175 bool isLastResort);
176 bool collectFallbackHintChars(Vector<UChar32>& hint, bool needsList); 176 bool collectFallbackHintChars(Vector<UChar32>& hint, bool needsList);
177 177
178 void insertRunIntoShapeResult(ShapeResult*, PassOwnPtr<ShapeResult::RunInfo> runToInsert, unsigned startGlyph, unsigned numGlyphs, hb_buffer_t*); 178 void insertRunIntoShapeResult(ShapeResult*, PassOwnPtr<ShapeResult::RunInfo> runToInsert, unsigned startGlyph, unsigned numGlyphs, hb_buffer_t*);
179 179
180 OwnPtr<UChar[]> m_normalizedBuffer; 180 OwnPtr<UChar[]> m_normalizedBuffer;
181 unsigned m_normalizedBufferLength; 181 unsigned m_normalizedBufferLength;
182 182
183 Vector<hb_feature_t, 4> m_features; 183 Vector<hb_feature_t, 4> m_features;
184 Deque<HolesQueueItem> m_holesQueue; 184 Deque<HolesQueueItem> m_holesQueue;
185 }; 185 };
186 186
187 187
188 } // namespace blink 188 } // namespace blink
189 189
190 #endif // HarfBuzzShaper_h 190 #endif // HarfBuzzShaper_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698