OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2012 Google Inc. All rights reserved. | 2 * Copyright (c) 2012 Google Inc. All rights reserved. |
3 * Copyright (C) 2013 BlackBerry Limited. All rights reserved. | 3 * Copyright (C) 2013 BlackBerry Limited. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
7 * met: | 7 * met: |
8 * | 8 * |
9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
514 case FontDescription::NormalKerning: | 514 case FontDescription::NormalKerning: |
515 // kern/vkrn are enabled by default | 515 // kern/vkrn are enabled by default |
516 break; | 516 break; |
517 case FontDescription::NoneKerning: | 517 case FontDescription::NoneKerning: |
518 m_features.append(description.orientation() == Vertical ? noVkrn : noKer
n); | 518 m_features.append(description.orientation() == Vertical ? noVkrn : noKer
n); |
519 break; | 519 break; |
520 case FontDescription::AutoKerning: | 520 case FontDescription::AutoKerning: |
521 break; | 521 break; |
522 } | 522 } |
523 | 523 |
| 524 static hb_feature_t noClig = { HB_TAG('c', 'l', 'i', 'g'), 0, 0, static_cast
<unsigned>(-1) }; |
| 525 static hb_feature_t noLiga = { HB_TAG('l', 'i', 'g', 'a'), 0, 0, static_cast
<unsigned>(-1) }; |
| 526 switch (description.commonLigaturesState()) { |
| 527 case FontDescription::DisabledLigaturesState: |
| 528 m_features.append(noLiga); |
| 529 m_features.append(noClig); |
| 530 break; |
| 531 case FontDescription::EnabledLigaturesState: |
| 532 // liga and clig are on by default |
| 533 break; |
| 534 case FontDescription::NormalLigaturesState: |
| 535 break; |
| 536 } |
| 537 static hb_feature_t dlig = { HB_TAG('d', 'l', 'i', 'g'), 1, 0, static_cast<u
nsigned>(-1) }; |
| 538 switch (description.discretionaryLigaturesState()) { |
| 539 case FontDescription::DisabledLigaturesState: |
| 540 // dlig is off by default |
| 541 break; |
| 542 case FontDescription::EnabledLigaturesState: |
| 543 m_features.append(dlig); |
| 544 break; |
| 545 case FontDescription::NormalLigaturesState: |
| 546 break; |
| 547 } |
| 548 static hb_feature_t hlig = { HB_TAG('h', 'l', 'i', 'g'), 1, 0, static_cast<u
nsigned>(-1) }; |
| 549 switch (description.historicalLigaturesState()) { |
| 550 case FontDescription::DisabledLigaturesState: |
| 551 // hlig is off by default |
| 552 break; |
| 553 case FontDescription::EnabledLigaturesState: |
| 554 m_features.append(hlig); |
| 555 break; |
| 556 case FontDescription::NormalLigaturesState: |
| 557 break; |
| 558 } |
| 559 |
524 FontFeatureSettings* settings = description.featureSettings(); | 560 FontFeatureSettings* settings = description.featureSettings(); |
525 if (!settings) | 561 if (!settings) |
526 return; | 562 return; |
527 | 563 |
528 unsigned numFeatures = settings->size(); | 564 unsigned numFeatures = settings->size(); |
529 for (unsigned i = 0; i < numFeatures; ++i) { | 565 for (unsigned i = 0; i < numFeatures; ++i) { |
530 hb_feature_t feature; | 566 hb_feature_t feature; |
531 const AtomicString& tag = settings->at(i).tag(); | 567 const AtomicString& tag = settings->at(i).tag(); |
532 feature.tag = HB_TAG(tag[0], tag[1], tag[2], tag[3]); | 568 feature.tag = HB_TAG(tag[0], tag[1], tag[2], tag[3]); |
533 feature.value = settings->at(i).value(); | 569 feature.value = settings->at(i).value(); |
(...skipping 495 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1029 if (!foundToX) | 1065 if (!foundToX) |
1030 toX = m_run.rtl() ? 0 : m_totalWidth; | 1066 toX = m_run.rtl() ? 0 : m_totalWidth; |
1031 | 1067 |
1032 // Using floorf() and roundf() as the same as mac port. | 1068 // Using floorf() and roundf() as the same as mac port. |
1033 if (fromX < toX) | 1069 if (fromX < toX) |
1034 return FloatRect(floorf(point.x() + fromX), point.y(), roundf(toX - from
X), height); | 1070 return FloatRect(floorf(point.x() + fromX), point.y(), roundf(toX - from
X), height); |
1035 return FloatRect(floorf(point.x() + toX), point.y(), roundf(fromX - toX), he
ight); | 1071 return FloatRect(floorf(point.x() + toX), point.y(), roundf(fromX - toX), he
ight); |
1036 } | 1072 } |
1037 | 1073 |
1038 } // namespace WebCore | 1074 } // namespace WebCore |
OLD | NEW |