This is to replace the subtitle / caption style using in Youtube
/* ==UserStyle== @name:en Youtube Subtitle Caption Stylish @name:ja Youtube Subtitle Caption Stylish @name:zh-TW Youtube Subtitle Caption Stylish @name Youtube Subtitle Caption Stylish @namespace http://userstyles.org @version 2.2.2 @author CY Fung @description:en This is to replace the subtitle / caption style using in Youtube @description:ja Youtubeで使用している 字幕(キャプション)のスタイル を置き換えるためのものです。 @description:zh-TW 這是為了替換 Youtube 中使用的字幕樣式 @description This is to replace the subtitle / caption style using in Youtube @license MIT @preprocessor stylus @var color caption-shadow-color "Caption Shadow Color" hsl(212, 100%, 50%) @var text caption-custom-shadow "Caption Custom Shadow" "\"\"" @var color caption-text-color "Caption Text Color" #f4f4f4 @var range normal-caption-size-px "Normal Caption Size" [18, 10, 26, 2, 'px'] @var range theater-caption-size-t "Theater Caption Size" [2, 1.2, 3.2, 0.2] @var range fullscreen-caption-size-t "Fullscreen Caption Size" [2.6, 1.6, 4.2, 0.2] @var select import-noto-sans-select "Import Noto Sans (Multi-lang)" { "font-display: block": "block", "font-display: swap": "swap", "Disable": "disable" } @var range caption-font-weight "Caption Font Weight" [400, 300, 500, 100] @var number max-line-width-for-text-wrap "Max Line Width for Text Wrap" [96, 72, 100, 4, '%'] @var color caption-background-color "Caption BG Color" rgba(0,0,0,0.2) @var range caption-padding-leftright "Caption BG Padding LeftRight" [0, 0, 16, 2, 'px'] @var range caption-padding-topbottom "Caption BG Padding TopBottom" [0, 0, 16, 2, 'px'] @var text caption-custom-font-family "Caption Custom Font Family" "\"\"" ==/UserStyle== */ @-moz-document url-prefix("https://www.youtube.com/watch?v=") { import-noto-sans-all = (import-noto-sans-select != "disable") dummy() { // dummy border: 0; } theter-caption-size-vw=theater-caption-size-t * 1vw // fullscreen-caption-size-vw=fullscreen-caption-size-t * 1vw // importNotoSans(mDisplay, args...) { for $j in 0..length(args) - 2 { args[$j]=join('', 'family=', args[$j], ':wght@', caption-font-weight) } join('', 'https://fonts.googleapis.com/css2?', join('&', args), '&display=', mDisplay) } if import-noto-sans-all { @import importNotoSans( import-noto-sans-select, 'Noto+Sans', 'Noto+Sans+HK', 'Noto+Sans+TC', 'Noto+Sans+SC', 'Noto+Sans+JP', 'Noto+Sans+KR') } ytd-watch-flexy .ytp-caption-segment { --font-size: normal-caption-size-px; } ytd-watch-flexy[theater] .ytp-caption-segment { --font-size: theter-caption-size-vw; } ytd-watch-flexy[fullscreen] .ytp-big-mode .ytp-caption-segment { big-caption-size-vw=fullscreen-caption-size-vw * 1.3 // --font-size: big-caption-size-vw; } default-text-font = unquote("'YouTube Noto', Roboto, 'Arial Unicode Ms', Arial, Helvetica, Verdana, 'PT Sans Caption', sans-serif") html { --stylish-text-font: "%s" % default-text-font; --stylish-text-weight: caption-font-weight; } if length(caption-custom-font-family) > 2 { html { --stylish-text-font: convert(caption-custom-font-family); } } else if import-noto-sans-all { html { --stylish-text-font: "'Noto Sans TC', 'Noto Sans SC', 'Noto Sans JP', 'Noto Sans KR', 'Noto Sans', %s" % default-text-font; } :lang(ja) { --stylish-text-font: "'Noto Sans JP', 'Noto Sans KR', 'Noto Sans TC', 'Noto Sans SC', 'Noto Sans', %s" % default-text-font; } :lang(ko) { --stylish-text-font: "'Noto Sans KR', 'Noto Sans TC', 'Noto Sans JP', 'Noto Sans SC', 'Noto Sans', %s" % default-text-font; } } #ytp-caption-window-container .caption-window.ytp-caption-window-bottom[style*="text-align:"][style*="center"][style*="bottom:"][style*="margin-left:"][style*="left:"][style*="2%"] { width: 100% !important; left: 0 !important; margin-left: 0 !important; padding-bottom: 0 !important; margin-bottom: 0 !important; bottom: calc(40px + 2%) !important; touch-action: none !important; pointer-events: none !important; cursor: default !important; transition: initial !important; contain: layout style; } #ytp-caption-window-container .caption-window.ytp-caption-window-bottom[style*="text-align:"][style*="center"][style*="bottom:"][style*="margin-left:"][style*="left:"][style*="2%"] .captions-text .caption-visual-line .ytp-caption-segment { --text-color: caption-text-color; --text-shadow-h-shadow: 0px; --text-shadow-v-shadow: 0px; --text-shadow-blur-radius: 1.7px; --text-shadow-color: caption-shadow-color; --text-outline-color: caption-shadow-color; /* --text-shadow: var(--text-shadow-color) var(--text-shadow-h-shadow) var(--text-shadow-v-shadow) var(--text-shadow-blur-radius); */ --letter-spacing: 0px; --text-shadow-black-outline: caption-shadow-color; margin: 2px 0 !important; display: inline-block !important; white-space: pre-wrap !important; if caption-padding-leftright + caption-padding-topbottom > 0px { background: caption-background-color !important; padding: s('%s %s', caption-padding-topbottom, caption-padding-leftright); } else { background: transparent !important; } font-size: var(--font-size) !important; transform: none !important; text-shadow: var( --text-outline-color) -1px -1px 0, var( --text-outline-color) -1px 1px 0, var( --text-outline-color) 1px -1px 0, var( --text-outline-color) 1px 1px 0, var( --text-shadow-color) 0 0 1.5px, var( --text-shadow-color) 0 0 2px, var( --text-shadow-color) 0 0 2.5px, var( --text-shadow-color) 0 0 3px, var( --text-shadow-color) 0 0 3.5px, var( --text-shadow-color) 0 0 4px, var( --text-shadow-black-outline) -2px -2px 2px, var( --text-shadow-black-outline) 2px 2px 2px, var( --text-shadow-black-outline) 2px -2px 2px, var( --text-shadow-black-outline) -2px 2px 2px !important; caption-custom-shadow= unquote(caption-custom-shadow or "") if substr('%s' % caption-custom-shadow, 5, 1) { trx-shadow = unquote(replace('text-shadow:', '', '%s' % caption-custom-shadow)) --trx-shadow: trx-shadow; text-shadow: var(--trx-shadow) !important; } color: var(--text-color) !important; fill: var(--text-color) !important; font-family: var(--stylish-text-font) !important; font-weight: var(--stylish-text-weight) !important; letter-spacing: var(--letter-spacing) !important; touch-action: none !important; pointer-events: none !important; cursor: default !important; transition: initial !important; max-width: max-line-width-for-text-wrap; box-sizing: border-box; contain: layout style; } #ytp-caption-window-container::after { position: fixed; top: 0; left: 0; font-size: 1px; line-height: 100%; width: 100px; height: 100px; /* https://jsfiddle.net/2harzeLy/2/ */ content: '\0460\0301\0900\1F00\0370\0102\0100\28EB2\28189\26DA0\25A9C\249BB\23F61\22E8B\21927\21076\2048E\1F6F5\FF37\F94F\F0B2\9F27\9D9A\9BEA\9A6B\98EC\9798\9602\949D\9370\926B\913A\8FA9\8E39\8CC1\8B26\8983\8804\8696\8511\83BC\828D\8115\7F9A\7E5B\7D07\7B91\7A2C\78D2\776C\7601\74AA\73B9\7265\70FE\6FBC\6E88\6D64\6C3F\6A9C\6957\67FE\66B3\6535\63F2\628E\612F\5FE7\5E6C\5CEE\5B6D\5A33\58BC\575B\5611\54BF\536E\51D0\505D\4F22\4AD1\41DB\3B95\3572\2F3F\26FD\25A1\2477\208D\1D0A\1FB\A1\A3\B4\2CB\60\10C\E22\A5\4E08\B0\627\2500\5E\201C\3C\B7\23\26\3E\D\20\25EE8\1F235\FFD7\FA10\F92D\9E8B\9C3E\9AE5\98EB\971D\944A\92BC\9143\8F52\8DC0\8B2D\8973\87E2\8655\84B4\82E8\814A\7F77\7D57\7BC8\7A17\7851\768C\7511\736C\7166\6F58\6D7C\6B85\69DD\6855\667E\64D2\62CF\6117\5F6C\5D9B\5###\598B\57B3\5616\543F\528D\50DD\4F57\4093\3395\32B5\31C8\3028\2F14\25E4\24D1\2105\2227\A8\2D9\2CA\2467\B1\2020\2466\251C\266B\AF\4E91\221E\2464\2266\2207\4E32\25B3\2463\2010\2103\3014\25C7\24\25BD\4E18\2460\21D2\2015\2193\4E03\7E\25CB\2191\25BC\3D\500D\4E01\25\30F6\2605\266A\40\2B\4E16\7C\A9\4E\21\1F1E9\FEE3\F0A7\9F3D\9DFA\9C3B\9A5F\98C8\972A\95B9\94E7\9410\92B7\914C\8FE2\8E2D\8CAF\8B5E\8A02\8869\86E4\8532\83B4\82A9\814D\7FFA\7ED7\7DC4\7CCC\7BC3\7ACA\797C\783E\770F\760A\74EF\73E7\72DD\719C\7005\6ED8\6DC3\6CB2\6A01\68E1\6792\663A\64F8\63BC\623B\60FA\5FD1\5EA3\5D32\5BF5\5AB2\5981\5831\570A\5605\5519\53FB\52A2\5110\4FE3\4EB8\3127\279C\2650\254B\23E9\207B\1D34\2AE\176\221A\161\200B\300C\4E4C\1F921\FF78\FA0A\F78A\9EB9\9D34\9BD3\9A6F\9912\97C6\964E\950C\93E4\92E5\91F0\90BB\8F68\8E18\8B6C\89F6\889B\874C\8602\84B1\8378\826E\8113\7FB1\7EAF\7D89\7C20\7AFB\7988\7840\7705\75CC\749A\73B3\727F\7113\6FE8\6ED6\6DD3\6CDA\6BBB\6A31\6900\67D9\66A7\655D\6427\630D\61C6\60AC\5F78\5E34\5CE0\5B80\5A51\590B\57A1\566F\5551\543D\52DB\518F\5032\3A17\305C\2749\264A\2567\2476\2139\1EC0\11AF\2C8\1AF\E17\2190\2022\2502\2312\2025\50'; font-family: var(--stylish-text-font) !important; font-weight: var(--stylish-text-weight) !important; display: block; visibility: collapse; user-select: none !important; touch-action: none !important; pointer-events: none !important; contain: strict; transform: translate(-10px, -10px) scale(0.03); transform-origin: 0 0; } }