Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 84d3ca06 authored by Sean McQuillan's avatar Sean McQuillan Committed by Gerrit Code Review
Browse files

Merge "Add codepoint exclusions API"

parents 1728bbbe 5f1172f5
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -44998,6 +44998,10 @@ package android.text {
    method public android.text.Editable newEditable(CharSequence);
  }
  public final class EmojiConsistency {
    method @NonNull public static java.util.Set<int[]> getEmojiConsistencySet();
  }
  public interface GetChars extends java.lang.CharSequence {
    method public void getChars(int, int, char[], int);
  }
+82 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2022 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.text;

import android.annotation.NonNull;

import java.util.Collections;
import java.util.Set;


/**
 * The set of emoji that should be drawn by the system with the default font for device consistency.
 *
 * This is intended to be used only by applications that do custom emoji rendering using tools like
 * {@link android.text.style.ReplacementSpan} or custom emoji fonts.
 *
 * An example of how this should be used:
 *
 * <p>
 *     <ol>
 *         <li>
 *             Match emoji for third party custom rendering
 *         </li>
 *         <li>
 *             For each match, check against NonStandardEmoji before displaying custom glyph
 *         </li>
 *         <li>
 *             If in NonStandardEmojiSet, do not display custom glyph (render with
 *             android.graphics.Typeface.DEFAULT instead)
 *         </li>
 *         <li>
 *             Otherwise, do custom rendering like normal
 *         </li>
 *     </ol>
 * </p>
 */
public final class EmojiConsistency {
    /* Cannot construct */
    private EmojiConsistency() { }

    /**
     * The set of emoji that should be drawn by the system with the default font for device
     * consistency.
     *
     * Apps SHOULD attempt to avoid overwriting system emoji rendering with custom emoji glyphs for
     * these codepoint sequences.
     *
     * Apps that display custom emoji glyphs via matching code may filter against this set. On
     * match, the application SHOULD prefer Typeface.Default instead of a custom glyph
     *
     * Apps that use fonts may use this set to add {@link android.text.style.TypefaceSpan} for
     * android.graphics.Typeface.DEFAULT for matched codepoint sequences.
     *
     * Codepoint sequences returned MUST match exactly to be considered a match with the exception
     * of Variation Selectors.
     *
     * All codepoint sequences returned MUST be a complete emoji codepoint sequence as defined by
     * unicode.
     *
     * @return set of codepoint sequences representing codepoints that should be rendered by the
     * system using the default font.
     */
    @NonNull
    public static Set<int[]> getEmojiConsistencySet() {
        return Collections.emptySet();
    }

}
+37 −0
Original line number Diff line number Diff line
/*
 * Copyright 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.text;

import static junit.framework.Assert.assertEquals;

import androidx.test.filters.SmallTest;
import androidx.test.runner.AndroidJUnit4;

import org.junit.Test;
import org.junit.runner.RunWith;

import java.util.Collections;

@SmallTest
@RunWith(AndroidJUnit4.class)
public class EmojiConsistencyTest {

    @Test
    public void exclusionList_isEmpty() {
        assertEquals(EmojiConsistency.getEmojiConsistencySet(), Collections.emptySet());
    }
}