mirror of
https://github.com/zoriya/react-native-svg.git
synced 2026-06-02 14:50:43 +00:00
Implement default and required css 3 fonts features, fontFeatureSettings, sub-/super- script baseline-shift.
Activate OpenType localized forms and features required for proper display of composed characters and marks.
This commit is contained in:
+101
@@ -260,6 +260,106 @@ const alignmentBaseline = PropTypes.oneOf(['baseline', 'text-bottom', 'alphabeti
|
||||
*/
|
||||
const baselineShift = PropTypes.oneOfType([PropTypes.oneOf(['sub', 'super', 'baseline']), PropTypes.arrayOf(numberProp), PropTypes.string]);
|
||||
|
||||
/*
|
||||
6.12. Low-level font feature settings control: the font-feature-settings property
|
||||
|
||||
Name: font-feature-settings
|
||||
Value: normal | <feature-tag-value> #
|
||||
Initial: normal
|
||||
Applies to: all elements
|
||||
Inherited: yes
|
||||
Percentages: N/A
|
||||
Media: visual
|
||||
Computed value: as specified
|
||||
Animatable: no
|
||||
|
||||
This property provides low-level control over OpenType font features.
|
||||
|
||||
It is intended as a way of providing access to font features
|
||||
that are not widely used but are needed for a particular use case.
|
||||
|
||||
Authors should generally use ‘font-variant’ and its related subproperties
|
||||
whenever possible and only use this property for special cases where its use
|
||||
is the only way of accessing a particular infrequently used font feature.
|
||||
|
||||
enable small caps and use second swash alternate
|
||||
font-feature-settings: "smcp", "swsh" 2;
|
||||
A value of ‘normal’ means that no change in glyph selection or positioning occurs due to this property.
|
||||
|
||||
Feature tag values have the following syntax:
|
||||
|
||||
<feature-tag-value> = <string> [ <integer> | on | off ]?
|
||||
The <string> is a case-sensitive OpenType feature tag. As specified in the OpenType specification,
|
||||
feature tags contain four ASCII characters.
|
||||
|
||||
Tag strings longer or shorter than four characters,
|
||||
or containing characters outside the U+20–7E codepoint range are invalid.
|
||||
|
||||
Feature tags need only match a feature tag defined in the font,
|
||||
so they are not limited to explicitly registered OpenType features.
|
||||
|
||||
Fonts defining custom feature tags should follow the tag name rules
|
||||
defined in the OpenType specification [OPENTYPE-FEATURES].
|
||||
|
||||
Feature tags not present in the font are ignored;
|
||||
a user agent must not attempt to synthesize fallback behavior based on these feature tags.
|
||||
|
||||
The one exception is that user agents may synthetically support the kern feature with fonts
|
||||
that contain kerning data in the form of a ‘kern’ table but lack kern feature support in the ‘GPOS’ table.
|
||||
|
||||
In general, authors should use the ‘font-kerning’ property to explicitly enable or disable kerning
|
||||
since this property always affects fonts with either type of kerning data.
|
||||
|
||||
If present, a value indicates an index used for glyph selection.
|
||||
|
||||
An <integer> value must be 0 or greater.
|
||||
|
||||
A value of 0 indicates that the feature is disabled.
|
||||
|
||||
For boolean features, a value of 1 enables the feature.
|
||||
|
||||
For non-boolean features, a value of 1 or greater enables the feature and indicates the feature selection index.
|
||||
|
||||
A value of ‘on’ is synonymous with 1 and ‘off’ is synonymous with 0.
|
||||
|
||||
If the value is omitted, a value of 1 is assumed.
|
||||
|
||||
font-feature-settings: "dlig" 1; /* dlig=1 enable discretionary ligatures * /
|
||||
font-feature-settings: "smcp" on; /* smcp=1 enable small caps * /
|
||||
font-feature-settings: 'c2sc'; /* c2sc=1 enable caps to small caps * /
|
||||
font-feature-settings: "liga" off; /* liga=0 no common ligatures * /
|
||||
font-feature-settings: "tnum", 'hist'; /* tnum=1, hist=1 enable tabular numbers and historical forms * /
|
||||
font-feature-settings: "tnum" "hist"; /* invalid, need a comma-delimited list * /
|
||||
font-feature-settings: "silly" off; /* invalid, tag too long * /
|
||||
font-feature-settings: "PKRN"; /* PKRN=1 enable custom feature * /
|
||||
font-feature-settings: dlig; /* invalid, tag must be a string * /
|
||||
|
||||
When values greater than the range supported by the font are specified, the behavior is explicitly undefined.
|
||||
|
||||
For boolean features, in general these will enable the feature.
|
||||
|
||||
For non-boolean features, out of range values will in general be equivalent to a 0 value.
|
||||
|
||||
However, in both cases the exact behavior will depend upon the way the font is designed
|
||||
(specifically, which type of lookup is used to define the feature).
|
||||
|
||||
Although specifically defined for OpenType feature tags,
|
||||
feature tags for other modern font formats that support font features may be added in the future.
|
||||
|
||||
Where possible, features defined for other font formats
|
||||
should attempt to follow the pattern of registered OpenType tags.
|
||||
|
||||
The Japanese text below will be rendered with half-width kana characters:
|
||||
|
||||
body { font-feature-settings: "hwid"; /* Half-width OpenType feature * / }
|
||||
|
||||
<p>毎日カレー食べてるのに、飽きない</p>
|
||||
|
||||
https://drafts.csswg.org/css-fonts-3/#propdef-font-feature-settings
|
||||
https://developer.mozilla.org/en/docs/Web/CSS/font-feature-settings
|
||||
*/
|
||||
const fontFeatureSettings = PropTypes.string;
|
||||
|
||||
const textSpecificProps = {
|
||||
...pathProps,
|
||||
...fontProps,
|
||||
@@ -269,6 +369,7 @@ const textSpecificProps = {
|
||||
lengthAdjust,
|
||||
textLength,
|
||||
fontData: PropTypes.object,
|
||||
fontFeatureSettings,
|
||||
};
|
||||
|
||||
// https://svgwg.org/svg2-draft/text.html#TSpanAttributes
|
||||
|
||||
Reference in New Issue
Block a user