1 /* 2 * Copyright (C) 2024 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #include <hb.h> 18 19 #include <vector> 20 21 #include "StringPiece.h" 22 #include "minikin/FontVariation.h" 23 24 namespace minikin { 25 parseVariationSettings(const std::string & varSettings)26VariationSettings parseVariationSettings(const std::string& varSettings) { 27 std::vector<FontVariation> variations; 28 29 SplitIterator it(varSettings, ','); 30 while (it.hasNext()) { 31 StringPiece var = it.next(); 32 33 static hb_variation_t variation; 34 if (hb_variation_from_string(var.data(), var.size(), &variation)) { 35 variations.push_back({static_cast<AxisTag>(variation.tag), variation.value}); 36 } 37 } 38 return VariationSettings(variations); 39 } 40 41 } // namespace minikin 42