| // Copyright 2016 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // NOTE: This file is deprecated and will soon be removed in favor of provider.fidl. |
| |
| library fuchsia.fonts; |
| |
| using fuchsia.mem; |
| |
| /// Deprecated. See `GenericFontFamily`. |
| [Transitional] |
| enum FallbackGroup { |
| NONE = 0; |
| SERIF = 1; |
| SANS_SERIF = 2; |
| MONOSPACE = 3; |
| CURSIVE = 4; |
| FANTASY = 5; |
| }; |
| |
| /// Deprecated. See `FaceRequestFlags`. |
| /// Disables font fallback. The service won't try to search fallback font set if |
| /// there is no requested font family or if it doesn't contain requested |
| /// character. |
| const uint32 REQUEST_FLAG_NO_FALLBACK = 1; |
| |
| /// Deprecated. See `FaceRequestFlags`. |
| /// Disables approximate style matching. The service will only return font that |
| /// matches the requested style exactly. |
| const uint32 REQUEST_FLAG_EXACT_MATCH = 2; |
| |
| /// Deprecated. See `FaceRequest`. |
| struct Request { |
| /// Desired font family name, e.g. "Roboto". Font family search is |
| /// case-insensitive. In case when there is no specified family or the |
| /// specified family doesn't have glyph for the requested `character` then |
| /// a font from another family may be returned. This behavior can be disabled |
| /// using `REQUEST_FLAG_NO_FALLBACK`. |
| string:MAX_FAMILY_NAME_LENGTH? family; |
| |
| /// For example, 400 is normal, 700 is bold. |
| uint32 weight = 400; |
| |
| /// Numeric values matching OS/2 & Windows Metrics usWidthClass table. |
| /// https://www.microsoft.com/typography/otspec/os2.htm |
| /// For example, 5 is normal. |
| uint32 width = 5; |
| |
| Slant slant = Slant.UPRIGHT; |
| |
| /// BCP47 language tags in order of preference. See |
| /// https://tools.ietf.org/html/bcp47 . |
| vector<string:35>:8? language; |
| |
| /// Codepoint for the character that must be present in the returned font or 0. |
| /// Caller that specify this field are expected to extract character set from |
| /// the result and cache it in order to avoid calling the API more than |
| /// necessary. |
| uint32 character = 0; |
| |
| /// Fallback group preference. Caller can leave this field set to NONE. In |
| /// that case the font provider will use fallback group of the specified font |
| /// family. |
| FallbackGroup fallback_group = FallbackGroup.NONE; |
| |
| uint32 flags = 0; |
| }; |
| |
| resource struct Response { |
| fuchsia.mem.Buffer buffer; |
| |
| /// Buffer identifier for the buffer. Responses with the same buffer_id are |
| /// guaranteed to contain the same data in the buffer. Clients may use this |
| /// value to detect if they already have the font cached in parsed form. |
| uint32 buffer_id; |
| |
| /// Font index within `buffer`. Used for font formats that may contain more |
| /// than one font per file, e.g. TTC (TrueType Collection). |
| uint32 font_index; |
| }; |
| |
| /// Deprecated. |
| /// See `Style2`. |
| struct Style { |
| uint32 weight; |
| uint32 width; |
| Slant slant; |
| }; |
| |
| /// Deprecated. See `FontFamilyInfo`. |
| /// |
| /// Information about font family that can be requested using GetFamilyInfo(). |
| struct FamilyInfo { |
| /// Canonical font family name. Note that this may be different from the |
| /// value passed to GetFamilyInfo() because GetFamilyInfo() also resolves |
| /// font aliases and ignores case. For example GetFamilyInfo("robotoslab") |
| /// will FamilyInfo.name = "Robot Slab". |
| string:MAX_FAMILY_NAME_LENGTH name; |
| |
| /// Unordered list of all available styles in the family. |
| vector<Style>:MAX_FAMILY_STYLES styles; |
| }; |
| |
| /// Provider of digital font files and metadata. |
| /// |
| /// TODO(fxbug.dev/8903): Remove deprecated methods and move to provider.fidl. |
| [Discoverable] |
| protocol Provider { |
| |
| /// Deprecated. See `GetTypeface`. |
| /// |
| /// Returns font that matches specified `request`. |
| GetFont(Request request) -> (Response? response); |
| |
| /// Deprecated. See `GetFontFamilyInfo`. |
| /// |
| /// Returns information for the specified font family or null if there is |
| /// no family with the specified name. This function respects family name |
| /// aliases and ignores case, so request for "robotoSLAB" will return |
| /// FamilyInfo for "Roboto Slab". |
| GetFamilyInfo(string:MAX_FAMILY_NAME_LENGTH family) -> (FamilyInfo? family_info); |
| |
| /// Returns a typeface that matches the specified `request`, or an empty table if no matching |
| /// face is found. (The latter is more likely to happen if `TypefaceRequestFlags.EXACT_FAMILY` |
| /// is used to disable fallbacks.) |
| GetTypeface(TypefaceRequest request) -> (TypefaceResponse response); |
| |
| /// Returns information for the specified font family, or an empty table if there is no family |
| /// with the specified name. |
| /// |
| /// This function respects family name aliases and ignores case. For example, "RobotoSlab" is an |
| /// alias for the canonical name "Roboto Slab". A request for "robotoSLAB" would return the |
| /// `FontFamilyInfo` for "Roboto Slab" due to the case-insensitivity and alias resolution. |
| GetFontFamilyInfo(FamilyName family) -> (FontFamilyInfo family_info); |
| |
| /// Register a listener to be notified when the set of available fonts or mappings has changed. |
| /// A client can register as many listeners as it wishes. |
| /// |
| /// To unregister, close the channel. |
| RegisterFontSetEventListener(FontSetEventListener listener) -> (); |
| }; |