{"id":4427,"url":"https://github.com/aMarCruz/react-native-text-size","last_synced_at":"2025-08-04T01:32:25.218Z","repository":{"id":29240915,"uuid":"116943439","full_name":"aMarCruz/react-native-text-size","owner":"aMarCruz","description":"Measure text accurately before laying it out and get font information from your App.","archived":false,"fork":false,"pushed_at":"2024-07-17T10:20:57.000Z","size":851,"stargazers_count":400,"open_issues_count":25,"forks_count":92,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-10-11T22:39:06.297Z","etag":null,"topics":["fonts","height","layout","measure","multiline","precompute","react-native","size","text","width"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-2-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aMarCruz.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-01-10T10:33:49.000Z","updated_at":"2024-10-10T15:24:28.000Z","dependencies_parsed_at":"2023-10-20T16:43:53.483Z","dependency_job_id":"f0fc5df7-6d86-4390-bc16-1459baa379c9","html_url":"https://github.com/aMarCruz/react-native-text-size","commit_stats":{"total_commits":68,"total_committers":11,"mean_commits":6.181818181818182,"dds":0.5441176470588236,"last_synced_commit":"e8483f5fe8efc257ebfead5e8cad5250e7330153"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aMarCruz%2Freact-native-text-size","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aMarCruz%2Freact-native-text-size/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aMarCruz%2Freact-native-text-size/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aMarCruz%2Freact-native-text-size/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aMarCruz","download_url":"https://codeload.github.com/aMarCruz/react-native-text-size/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228257318,"owners_count":17892651,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fonts","height","layout","measure","multiline","precompute","react-native","size","text","width"],"created_at":"2024-01-05T20:17:11.569Z","updated_at":"2024-12-07T08:30:39.309Z","avatar_url":"https://github.com/aMarCruz.png","language":"Java","readme":"# React Native Text Size\n\n[![npm Version][npm-badge]][npm-url]\n[![License][license-badge]][license-url]\n\nMeasure text accurately before laying it out and get font information from your App (Android and iOS).\n\nIn my country (México), software developers are poorly paid, so I have had to look for another job to earn a living and I cannot dedicate more time to maintaining this and other repositories that over the years have never generated any money for me. If anyone is interested in maintaining this repository, I'd be happy to transfer it to them, along with the associated npm package. |\n:---: |\nEn mi país (México), los desarrolladores de software somos pésimamente pagados, por lo que he tenido que buscar otro trabajo para ganarme la vida y no puedo dedicar más tiempo a mantener éste y otros repositorios que a través de los años nunca me generaron dinero. Si a alguien le interesa dar mantenimiento a este repositorio, con gusto se lo transferiré, así como el paquete de npm asociado. |\n\nThere are two main functions: `flatHeights` to obtain the height of different blocks of text simultaneously, optimized for components such as [`\u003cFlatList\u003e`][0] or [`\u003cRecyclerListView\u003e`][1].\n\nThe other one is `measure`, which gets detailed information about one block of text:\n\n- The width used by the text, with an option to calculate the real width of the largest line.\n- The height of the text, with or without paddings.\n- The number of lines.\n- The width of the last line.\n- Extended information of a given line.\n\nThe width and height are practically the same as those received from the `onLayout` event of a `\u003cText\u003e` component with the same properties.\n\nIn both functions, the text to be measured is required, but the rest of the parameters are optional and work in the same way as with React Native:\n\n- `fontFamily`\n- `fontSize`\n- `fontWeight`\n- `fontStyle`\n- `fontVariant` (iOS)\n- `includeFontPadding` (Android)\n- `textBreakStrategy` (Android)\n- `letterSpacing`\n- `allowFontScaling`\n- `width`: Constraint for automatic line-break based on text-break strategy.\n\nIn addition, the library includes functions to obtain information about the fonts visible to the App.\n\nIf it has helped you, please support my work with a star ⭐️ or [ko-fi][kofi-url].\n\n## Installation\n\nMostly automatic installation from npm\n\n```bash\nyarn add react-native-text-size\nreact-native link react-native-text-size\n```\n\nChange the `compile` directive to `implementation` in the dependencies block of the android/app/build.gradle file.\n\n**Requirements:**\n\n- React Native v0.57 or later.\n- Android API 16 or iOS 9.0 and above.\n\nFor versions prior to 0.56 of React Native, please use [react-native-text-size v2.1.1](https://www.npmjs.com/package/react-native-text-size/v/2.1.1)\n\nSee [Manual Installation][2] on the Wiki as an alternative if you have problems with automatic installation.\n\n## API\n\n- [`measure`](#measure)\n\n- [`flatHeights`](#flatheights)\n\n- [`specsForTextStyles`](#specsfortextstyles)\n\n- [`fontFromSpecs`](#fontfromspecs)\n\n- [`fontFamilyNames`](#fontfamilynames)\n\n- [`fontNamesForFamilyName`](#fontnamesforfamilyname)\n\n## measure\n\n```ts\nmeasure(options: TSMeasureParams): Promise\u003cTSMeasureResult\u003e\n```\n\nThis function measures the text as RN does and its result is consistent\\* with that of `Text`'s [onLayout](https://facebook.github.io/react-native/docs/text#onlayout) event. It takes a subset of the properties used by [`\u003cText\u003e`][3] to describe the font and other options to use.\n\nIf you provide `width`, the measurement will apply automatic wrapping in addition to the explicit line breaks.\n\n\\* _There may be some inconsistencies in iOS, see this [Know Issue](#incorrent-height-ios) to know more._\n\n**Note:**\n\nAlthough this function is accurate and provides complete information, it can be heavy if the text is a lot, like the one that can be displayed in a FlatList. For these cases, it is better to use [`flatHeights`](#flatheights), which is optimized for batch processing.\n\n### TSMeasureParams\n\nPlain JS object with this properties (only `text` is required):\n\nProperty           | Type    | Default  | Notes\n------------------ | ------  | -------- | ------\ntext               | string  | (none)   | This is the only required parameter and may include _emojis_ or be empty, but it **must not be** `null`.\u003cbr\u003eIf this is an empty string the resulting `width` will be zero.\nfontFamily         | string  | OS dependent | The default is the same applied by React Native: Roboto in Android, San Francisco in iOS.\u003cbr\u003e**Note:** Device manufacturer or custom ROM can change the default font.\nfontWeight         | string  | 'normal' | On android, numeric ranges has no granularity and '500' to '900' becomes 'bold', but you can use a `fontFamily` of specific weight (\"sans-serif-thin\", \"sans-serif-medium\", etc).\nfontSize           | number  | 14       | The default font size comes from RN.\nfontStyle          | string  | 'normal' | One of \"normal\" or \"italic\".\nfontVariant        | array   | (none)   | _iOS only_\nallowFontScaling   | boolean | true     | To respect the user' setting of large fonts (i.e. use SP units).\nletterSpacing      | number  | (none)   | Additional spacing between characters (aka `tracking`).\u003cbr\u003e**Note:** In iOS a zero cancels automatic kerning.\u003cbr\u003e_All iOS, Android with API 21+_\nincludeFontPadding | boolean | true     | Include additional top and bottom padding, to avoid clipping certain characters.\u003cbr\u003e_Android only_\ntextBreakStrategy  | string  | 'highQuality' | One of 'simple', 'balanced', or 'highQuality'.\u003cbr\u003e_Android only, with API 23+_\nwidth              | number  | MAX_INT  | Restrict the width. The resulting height will vary depending on the automatic flow of the text.\nusePreciseWidth    | boolean | false    | If `true`, the result will include an exact `width` and the `lastLineWidth` property.\u003cbr\u003eYou can see the effect of this flag in the [sample App][sample-app].\nlineInfoForLine    | number  | (none)   | If `\u003e=0`, the result will include a [lineInfo](#lineinfo) property with information for the required line number.\n\nThe [sample App][sample-app] shows interactively the effect of these parameters on the screen.\n\n### TSMeasureResult\n\n`measure` returns a Promise that resolves to a JS object with this properties:\n\nProperty      | Type   | Notes\n------------- | ------ | ------\nwidth         | number | Total used width. It may be less or equal to the `width` option.\u003cbr\u003eOn Android, this value may vary depending on the `usePreciseWidth` flag.\nheight        | number | Total height, including top and bottom padding if `includingFontPadding` was set (the default).\nlastLineWidth | number | Width of the last line, without trailing blanks.\u003cbr\u003eIf `usePreciseWidth` is `false` (the default), this property is undefined.\nlineCount     | number | Number of lines, taking into account hard and automatic line breaks.\nlineInfo      | object | Line information.\u003cbr\u003eIf the `lineInfoForLine` option is not given, this property is undefined.\n\n#### lineInfo\n\nIf the value of the `lineInfoForLine` is greater or equal than `lineCount`, this info is for the last line (i.e. `lineCount` - 1).\n\nProperty      | Type   | Notes\n------------- | ------ | ------\nline          | number | Line number of this info, base 0.\u003cbr\u003eIt can be less than the requested line number if `lineInfoForLine` is out of range.\nstart         | number | Text offset of the beginning of this line.\nend           | number | Text offset after the last _visible_ character (so whitespace is not counted) on this line.\nbottom        | number | The vertical position of the bottom of this line, including padding.\nwidth         | number | Horizontal extent of this line, including leading margin indent, but excluding trailing whitespace.\u003cbr\u003eUse `usePreciseWidth:true` to get an accurate value for this property.\n\nIn case of error, the promise is rejected with an extended Error object with one of the following error codes, as a literal string:\n\nCode                 | Details\n-------------------- | -------\nE_MISSING_PARAMETERS | `measure` requires an object with the parameters, which was not provided.\nE_MISSING_TEXT       | The text to measure is `null` or was not provided.\nE_INVALID_FONT_SPEC  | The font specification is not valid. It is unlikely that this will happen on Android.\nE_UNKNOWN_ERROR      | Well... who knows?\n\n### Example\n\n```jsx\n//...\nimport rnTextSize, { TSFontSpecs } from 'react-native-text-size'\n\ntype Props = {}\ntype State = { width: number, height: number }\n\n// On iOS 9+ will show 'San Francisco' and 'Roboto' on Android\nconst fontSpecs: TSFontSpecs = {\n  fontFamily = undefined,\n  fontSize = 24,\n  fontStyle = 'italic',\n  fontWeight = 'bold',\n}\nconst text = 'I ❤️ rnTextSize'\n\nclass Test extends Component\u003cProps, State\u003e {\n  state = {\n    width: 0,\n    height: 0,\n  }\n\n  async componentDidMount() {\n    const width = Dimensions.get('window').width * 0.8\n    const size = await rnTextSize.measure({\n      text,             // text to measure, can include symbols\n      width,            // max-width of the \"virtual\" container\n      ...fontSpecs,     // RN font specification\n    })\n    this.setState({\n      width: size.width,\n      height: size.height\n    })\n  }\n\n  // The result is reversible\n  render() {\n    const { width, height } = this.state\n    return (\n      \u003cView style={{ padding: 12 }}\u003e\n        \u003cText style={{ width, height, ...fontSpecs }}\u003e\n          {text}\n        \u003c/Text\u003e\n      \u003c/View\u003e\n    )\n  }\n}\n```\n\n## flatHeights\n\n```ts\nflatHeights(options: TSHeightsParams): Promise\u003cnumber[]\u003e\n```\n\nCalculate the height of each of the strings in an array.\n\nThis is an alternative to `measure` designed for cases in which you have to calculate the height of numerous text blocks with common characteristics (width, font, etc), a typical use case with `\u003cFlatList\u003e` or `\u003cRecyclerListView\u003e` components.\n\nThe measurement uses the same algorithm as `measure` but it returns only the height of each block and, by avoiding multiple steps through the bridge, it is faster... _much faster_ on Android!\n\nI did tests on 5,000 random text blocks and these were the results (ms):\n\n\u0026nbsp;  | `measure` | `flatHeights`\n------- | --------: | ----------:\nAndroid | 49,624    | 1,091\niOS     |  1,949    |   732\n\nIn the future I will prepare an example of its use with FlatList and multiple styles on the same card.\n\n### TSHeightsParams\n\nThis is an object similar to the one you pass to `measure`, but the `text` option is an array of strings and the `usePreciseWidth` and `lineInfoForLine` options are ignored.\n\nProperty            | Type     | Default\n------------------- | -------- | --------\ntext                | string[] | (none)\nwidth               | number   | Infinity\nfontFamily          | string   | OS dependent\nfontWeight          | string   | 'normal'\nfontSize            | number   | 14\nfontStyle           | string   | 'normal'\nfontVariant         | array    | (none)\nallowFontScaling    | boolean  | true\nletterSpacing       | number   | (none)\nincludeFontPadding  | boolean  | true\ntextBreakStrategy   | string   | 'highQuality'\n\nThe result is a Promise that resolves to an array with the height of each block (in _SP_), in the same order in which the blocks were received.\n\nUnlike measure, `null` elements returns 0 without generating error, and empty strings returns the same height that RN assigns to empty `\u003cText\u003e` components (the difference of the result between `null` and empty is intentional).\n\n### Example\n\n```jsx\n//...\nimport rnTextSize, { TSFontSpecs } from 'react-native-text-size'\n\ntype Props = { texts: string[] }\ntype State = { heights: number[] }\n\n// On iOS 9+ will show 'San Francisco' and 'Roboto' on Android\nconst fontSpecs: TSFontSpecs = {\n  fontFamily = undefined,\n  fontSize = 24,\n  fontStyle = 'italic',\n  fontWeight = 'bold',\n}\nconst texts = ['I ❤️ rnTextSize', 'I ❤️ rnTextSize using flatHeights', 'Thx for flatHeights']\n\nclass Test extends Component\u003cProps, State\u003e {\n  state = {\n    heights: [],\n  }\n\n  async componentDidMount() {\n    const { texts } = this.props\n    const width = Dimensions.get('window').width * 0.8\n    const heights = await rnTextSize.flatHeights({\n      text: texts,      // array of texts to measure, can include symbols\n      width,            // max-width of the \"virtual\" container\n      ...fontSpecs,     // RN font specification\n    })\n    this.setState({\n      heights\n    })\n  }\n\n  render() {\n    const { texts } = this.props\n    const { heights } = this.state\n    \n    return (\n      \u003cView style={{ padding: 12 }}\u003e\n        {texts.map(\n          (text, index) =\u003e (\n            \u003cText style={{ height: heights[index], ...fontSpecs }}\u003e\n              {text}\n            \u003c/Text\u003e\n          )\n        )}\n      \u003c/View\u003e\n    )\n  }\n}\n```\n\n## specsForTextStyles\n\n```ts\nspecsForTextStyles(): Promise\u003c{ [key: string]: TSFontForStyle }\u003e\n```\n\nGet system font information for the running OS.\n\nThis is a wrapper for the iOS [`UIFont.preferredFontForTextStyle`][4] method and the current Android [Material Design Type Scale][5] styles.\n\nThe result is a Promise that resolves to a JS object whose keys depend on the OS, but its values are in turn objects fully compatible with those used in the RN styles, so it can be used to stylize `\u003cText\u003e` or `\u003cTextInput\u003e` components:\n\n### TSFontForStyle\n\nProperty      | Type         | Notes\n------------- | ------------ |------\nfontFamily    | string       | System family name or font face.\nfontSize      | number       | Font size in _SP_ (unscaled).\nfontStyle     | TSFontStyle  | Only if 'italic', undefined if the style is 'normal'.\nfontWeight    | TSFontWeight | Only if 'bold', undefined if the weight is 'normal'.\nfontVariant   | TSFontVariant[] or null | _iOS only_. Currently, no style includes this property.\nletterSpacing | number       | Omitted if running on Android with RN lower than 0.55\n\nTo know the key names, please see [Keys from specsForTextStyles][6] in the Wiki.\n\nI have not tried to normalize the keys of the result because, with the exception of two or three, they have a different interpretation in each OS, but you can use them to create custom styles according to your needs.\n\n## fontFromSpecs\n\n```ts\nfontFromSpecs(specs: TSFontSpecs): Promise\u003cTSFontInfo\u003e\n```\n\nReturns the characteristics of the font obtained from the given specifications.\n\n### TSFontSpecs\n\nThis parameter is a subset of [`TSMeasureParams`](#tsmeasureparams), so the details are omitted here.\n\nProperty      | Type     | Default\n------------- | -------- | -------\nfontFamily    | string   | iOS: 'San Francisco', Android: 'Roboto'\nfontWeight    | string   | 'normal'\nfontSize      | number   | 14\nfontStyle     | string   | 'normal'\nfontVariant   | string[] | (none)\nletterSpacing | number   | 0\n\n`fontFromSpecs` uses an implicit `allowsFontScaling:true` and, since this is not a measuring function, `includeFontPadding` has no meaning.\n\n### TSFontInfo\n\nThe result is a Promise that resolves to a JS object with info for the given font and size, units in [_SP_][7] in Android or points in iOS, using floating point numbers where applicable\\*.\n\nProperty    | Type     | Details\n----------- | -------- | --------\nfontFamily  | string   | In Android it is the same string passed as parameter.\nfontName    | string   |_iOS only_, always `undefined` in Android.\nfontSize    | number   | It may be different from the given parameter if the parameter includes decimals.\nfontStyle   | string   | 'normal' or 'italic'.\nfontWeight  | string   | 'normal' or 'bold', on iOS it can go from '100' to '900'.\nfontVariant | string[] | _iOS only_, always `undefined` in Android.\nascender    | number   | The recommended distance above the baseline for singled spaced text.\ndescender   | number   | The recommended distance below the baseline for singled spaced text.\ncapHeight   | number   | _iOS only_ Height of capital characters.\nxHeight     | number   | _iOS only_ Height of lowercase \"x\".\ntop         | number   | _Android only_. Maximum distance above the baseline for the tallest glyph in the font.\nbottom      | number   | _Android only_. Maximum distance below the baseline for the lowest glyph in the font.\nleading     | number   | The recommended additional space to add between lines of text.\nlineHeight  | number   | The recommended line height. It should be greater if text contain Unicode symbols, such as emojis.\n_hash       | number   | Hash code, may be useful for debugging.\n\n\\* _Using floats is more accurate than integers and allows you to use your preferred rounding method, but consider no more than 5 digits of precision in this values. Also, remember RN doesn't work with subpixels in Android and will truncate this values._\n\nSee more in:\n\n[Understanding typography][8] at the Google Material Design site.\n\n[About Text Handling in iOS][9] for iOS.\n\n## fontFamilyNames\n\n```ts\nfontFamilyNames(): Promise\u003cstring[]\u003e\n```\n\nReturns a Promise for an array of font family names available on the system.\n\nOn iOS, this uses the [`UIFont.familyNames`][10] method of the UIKit.\n\nOn Android, the result is hard-coded for the system fonts and complemented dynamically with the fonts installed by your app, if any.\n\nSee [About Android Fonts][11] and [Custom Fonts][12] in the Wiki to know more about this list.\n\n## fontNamesForFamilyName\n\n```ts\nfontNamesForFamilyName(fontFamily: string): Promise\u003cstring[]\u003e\n```\n\nWrapper for the `UIFont.fontNamesForFamilyName` method of UIKit, returns an array of font names available in a particular font family.\n\nYou can use the rnTextSize's `fontFamilyNames` function to get an array of the available font family names on the system.\n\nThis is an **iOS only** function, on Android it always resolves to `null`.\n\n## Known Issues\n\n### Inconsistent width between platforms\n\nIn iOS, the resulting width of both, `measure` and `flatHeights`, includes leading whitespace while in Android these are discarded.\n\n### Incorrent height (iOS)\n\nOn iOS, RN takes into account the absolute position on the screen to calculate the dimensions. rnTextSize can't do that and both, width and height, can have a difference of up to 1 pixel (not point).\n\n### letterSpacing not scaling (iOS)\n\nRN does not support the [Dynamic Type Sizes][13], but does an excellent job imitating this feature through `allowFontScaling` ...except for `letterSpacing` that is not scaled.\n\nI hope that a future version of RN solves this issue.\n\n### lineHeight Support\n\nAlthough rnTextSize provides the resulting `lineHeight` in some functions, it does not support it as a parameter because RN uses a non-standard algorithm to set it. I recommend you do not use `lineHeight` unless it is strictly necessary, but if you use it, try to make it 30% or more than the font size, or use rnTextSize [`fontFromSpecs`](#fontfromspecs) method if you want more precision.\n\n### Nested Text\n\nNested `\u003cText\u003e` components (or with images inside) can be rasterized with dimensions different from those calculated, rnTextSize does not accept multiple sizes.\n\n## TODO\n\n- [X] Normalized tracking or letter spacing in font info.\n- [ ] More testing, including Android and iOS TVs.\n- [ ] Learn the beautiful English, to make better docs.\n- [ ] Find something nice in the ugly Objective-C.\n\n## Support my Work\n\nI'm a full-stack developer with more than 20 year of experience and I try to share most of my work for free and help others, but this takes a significant amount of time and effort so, if you like my work, please consider...\n\n[\u003cimg src=\"https://amarcruz.github.io/images/kofi_blue.png\" height=\"36\" title=\"Support Me on Ko-fi\" /\u003e][kofi-url]\n\nOf course, feedback, PRs, and stars are also welcome 🙃\n\nThanks for your support!\n\n## License\n\nThe [BSD 2-Clause](LICENSE) \"Simplified\" License.\n\n\u0026copy; 2018-2019, Alberto Martínez. All rights reserved.\n\n[npm-badge]:      https://img.shields.io/npm/v/react-native-text-size.svg\n[npm-url]:        https://www.npmjs.com/package/react-native-text-size\n[license-badge]:  https://img.shields.io/badge/license-BSD%202--Clause-blue.svg\n[license-url]:    https://github.com/aMarCruz/react-native-text-size/blob/master/LICENSE\n[kofi-url]:       https://ko-fi.com/C0C7LF7I\n[sample-app]:     https://github.com/aMarCruz/rn-text-size-sample-app\n[0]: https://facebook.github.io/react-native/docs/flatlist\n[1]: https://www.npmjs.com/package/recyclerlistview\n[2]: https://github.com/aMarCruz/react-native-text-size/wiki/Manual-Installation\n[3]: https://facebook.github.io/react-native/docs/text#props\n[4]: https://developer.apple.com/documentation/uikit/uifont/1619030-preferredfontfortextstyle\n[5]: https://material.io/design/typography/#type-scale\n[6]: https://github.com/aMarCruz/react-native-text-size/wiki/Keys-from-specsForTextStyles\n[7]: https://developer.android.com/guide/topics/resources/more-resources#Dimension\n[8]: https://material.io/design/typography/understanding-typography.html#type-properties\n[9]: https://developer.apple.com/library/archive/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40009542.\n[10]: https://developer.apple.com/documentation/uikit/uifont/1619040-familynames?language=objc\n[11]: https://github.com/aMarCruz/react-native-text-size/wiki/About-Android-Fonts\n[12]: https://github.com/aMarCruz/react-native-text-size/wiki/Custom-Fonts\n[13]: https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/typography#dynamic-type-sizes\n","funding_links":["https://ko-fi.com/C0C7LF7I"],"categories":["Components"],"sub_categories":["Text \u0026 Rich Content"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FaMarCruz%2Freact-native-text-size","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FaMarCruz%2Freact-native-text-size","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FaMarCruz%2Freact-native-text-size/lists"}