Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(901)

Side by Side Diff: third_party/WebKit/Source/platform/fonts/shaping/HarfBuzzShaper.cpp

Issue 2161683002: Add LayoutLocale class (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Test stability Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 540 matching lines...) Expand 10 before | Expand all | Expand 10 after
551 } 551 }
552 } 552 }
553 553
554 PassRefPtr<ShapeResult> HarfBuzzShaper::shapeResult() 554 PassRefPtr<ShapeResult> HarfBuzzShaper::shapeResult()
555 { 555 {
556 RefPtr<ShapeResult> result = ShapeResult::create(m_font, 556 RefPtr<ShapeResult> result = ShapeResult::create(m_font,
557 m_normalizedBufferLength, m_textRun.direction()); 557 m_normalizedBufferLength, m_textRun.direction());
558 HarfBuzzScopedPtr<hb_buffer_t> harfBuzzBuffer(hb_buffer_create(), hb_buffer_ destroy); 558 HarfBuzzScopedPtr<hb_buffer_t> harfBuzzBuffer(hb_buffer_create(), hb_buffer_ destroy);
559 559
560 const FontDescription& fontDescription = m_font->getFontDescription(); 560 const FontDescription& fontDescription = m_font->getFontDescription();
561 const String& localeString = fontDescription.locale(); 561 const hb_language_t language = fontDescription.localeOrDefault().harfbuzzLan guage();
562 CString locale = localeString.latin1();
563 const hb_language_t language = hb_language_from_string(locale.data(), locale .length());
564 562
565 bool needsCapsHandling = fontDescription.variantCaps() != FontDescription::C apsNormal; 563 bool needsCapsHandling = fontDescription.variantCaps() != FontDescription::C apsNormal;
566 OpenTypeCapsSupport capsSupport; 564 OpenTypeCapsSupport capsSupport;
567 565
568 RunSegmenter::RunSegmenterRange segmentRange = { 566 RunSegmenter::RunSegmenterRange segmentRange = {
569 0, 567 0,
570 0, 568 0,
571 USCRIPT_INVALID_CODE, 569 USCRIPT_INVALID_CODE,
572 OrientationIterator::OrientationInvalid, 570 OrientationIterator::OrientationInvalid,
573 FontFallbackPriority::Invalid }; 571 FontFallbackPriority::Invalid };
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
642 m_font->getFontDescription().orientation(), 640 m_font->getFontDescription().orientation(),
643 segmentRange.renderOrientation); 641 segmentRange.renderOrientation);
644 642
645 CaseMapIntend caseMapIntend = CaseMapIntend::KeepSameCase; 643 CaseMapIntend caseMapIntend = CaseMapIntend::KeepSameCase;
646 if (needsCapsHandling) { 644 if (needsCapsHandling) {
647 caseMapIntend = capsSupport.needsCaseChange(smallCapsBehavior); 645 caseMapIntend = capsSupport.needsCaseChange(smallCapsBehavior);
648 } 646 }
649 647
650 CaseMappingHarfBuzzBufferFiller( 648 CaseMappingHarfBuzzBufferFiller(
651 caseMapIntend, 649 caseMapIntend,
652 fontDescription.locale(), 650 fontDescription.localeOrDefault(),
653 harfBuzzBuffer.get(), 651 harfBuzzBuffer.get(),
654 m_normalizedBuffer.get(), 652 m_normalizedBuffer.get(),
655 m_normalizedBufferLength, 653 m_normalizedBufferLength,
656 currentQueueItem.m_startIndex, 654 currentQueueItem.m_startIndex,
657 currentQueueItem.m_numCharacters); 655 currentQueueItem.m_numCharacters);
658 656
659 CapsFeatureSettingsScopedOverlay capsOverlay(m_features, capsSupport .fontFeatureToUse(smallCapsBehavior)); 657 CapsFeatureSettingsScopedOverlay capsOverlay(m_features, capsSupport .fontFeatureToUse(smallCapsBehavior));
660 658
661 if (!shapeRange(harfBuzzBuffer.get(), 659 if (!shapeRange(harfBuzzBuffer.get(),
662 currentQueueItem.m_startIndex, 660 currentQueueItem.m_startIndex,
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
704 result->m_width = run->m_width; 702 result->m_width = run->m_width;
705 result->m_numGlyphs = count; 703 result->m_numGlyphs = count;
706 ASSERT(result->m_numGlyphs == count); // no overflow 704 ASSERT(result->m_numGlyphs == count); // no overflow
707 result->m_hasVerticalOffsets = fontData->platformData().isVerticalAnyUpright (); 705 result->m_hasVerticalOffsets = fontData->platformData().isVerticalAnyUpright ();
708 result->m_runs.append(std::move(run)); 706 result->m_runs.append(std::move(run));
709 return result.release(); 707 return result.release();
710 } 708 }
711 709
712 710
713 } // namespace blink 711 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698